<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"  xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:access="http://www.bloglines.com/about/specs/fac-1.0">
  <access:restriction relationship="allow" />
  <channel>
    <title>Wikispaces : chessprogramming - items matching description</title>
    <link>https://chessprogramming.wikispaces.com/space/view</link>
    <description>Filtered items at Wikispaces : chessprogramming</description>
    
    <webMaster>help@wikispaces.com (Wikispaces)</webMaster>
    <generator>https://www.wikispaces.com/</generator>
    <ttl>60</ttl>
    <atom:link href="https://chessprogramming.wikispaces.com/space/xmlo?v=rss_2_0" rel="self" type="application/rss+xml" />
    <image>
      <title>Wikispaces : chessprogramming - items matching description</title>
      <url>https://www.wikispaces.com/i/l.png</url>
      <link>https://chessprogramming.wikispaces.com/space/view</link>
      <width>140</width>
      <height>48</height>
      <description>Wikispaces</description>
    </image>

    <item>
      <title>CPW-Engine_0x88_math</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_0x88_math</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_0x88_math</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_0x88_math</comments>
      <pubDate>Tue, 30 Dec 2014 18:33:23 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * 0x88_math&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/* row identifiers */&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;#define ROW_1   ( A1 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;#define ROW_2   ( A2 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;#define ROW_3   ( A3 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;#define ROW_4   ( A4 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;#define ROW_5   ( A5 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;#define ROW_6   ( A6 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;#define ROW_7   ( A7 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;#define ROW_8   ( A8 &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;/* column identifiers */&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;#define COL_A  ( A1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt;#define COL_B  ( B1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt;#define COL_C  ( C1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt;#define COL_D  ( D1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt;#define COL_E  ( E1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt;#define COL_F  ( F1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt;#define COL_G  ( G1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt;#define COL_H  ( H1 &amp;amp;amp; 7 )&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;/* vectors */&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;#define NORTH  16&amp;lt;br/&amp;gt;#define NN    ( NORTH + NORTH )&amp;lt;br/&amp;gt;#define SOUTH  -16&amp;lt;br/&amp;gt;#define SS    ( SOUTH + SOUTH )&amp;lt;br/&amp;gt;#define EAST  1&amp;lt;br/&amp;gt;#define WEST  -1&amp;lt;br/&amp;gt;#define NE    17&amp;lt;br/&amp;gt;#define SW    -17&amp;lt;br/&amp;gt;#define NW    15&amp;lt;br/&amp;gt;#define SE    -15&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* geberate square number from row and column */&amp;lt;br/&amp;gt;#define SET_SQ(row,col) (row * 16 + col)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* does a given number represent a square on the board? */&amp;lt;br/&amp;gt;#define IS_SQ(x)  ( (x) &amp;amp;amp; 0x88 ) ? (0) : (1)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* get board column that a square is part of */&amp;lt;br/&amp;gt;#define COL(sq)  ( (sq) &amp;amp;amp; 7 )&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;/* get board row that a square is part of */&amp;lt;br/&amp;gt;#define ROW(sq)  ( (sq) &amp;amp;gt;&amp;amp;gt; 4 )&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* determine if two squares lie on the same column */&amp;lt;br/&amp;gt;#define SAME_COL(sq1,sq2) ( ( COL(sq1) == COL(sq2) ) ? (1) : (0) )&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* determine if two squares lie in the same row */&amp;lt;br/&amp;gt;#define SAME_ROW(sq1,sq2) ( ( ROW(sq1) == ROW(sq2) ) ? (1) : (0) )&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* row identifiers */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#define ROW_1   ( A1 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW_2   ( A2 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW_3   ( A3 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW_4   ( A4 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW_5   ( A5 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW_6   ( A6 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW_7   ( A7 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW_8   ( A8 &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* column identifiers */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#define COL_A  ( A1 &amp;amp; 7 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL_B  ( B1 &amp;amp; 7 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL_C  ( C1 &amp;amp; 7 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL_D  ( D1 &amp;amp; 7 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL_E  ( E1 &amp;amp; 7 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL_F  ( F1 &amp;amp; 7 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL_G  ( G1 &amp;amp; 7 )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL_H  ( H1 &amp;amp; 7 )&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* vectors */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#define NORTH  16&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define NN    ( NORTH + NORTH )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define SOUTH  -16&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define SS    ( SOUTH + SOUTH )&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define EAST  1&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define WEST  -1&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define NE    17&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define SW    -17&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define NW    15&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define SE    -15&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* geberate square number from row and column */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define SET_SQ(row,col) (row * 16 + col)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* does a given number represent a square on the board? */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define IS_SQ(x)  ( (x) &amp;amp; 0x88 ) ? (0) : (1)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* get board column that a square is part of */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define COL(sq)  ( (sq) &amp;amp; 7 )&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* get board row that a square is part of */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define ROW(sq)  ( (sq) &amp;gt;&amp;gt; 4 )&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* determine if two squares lie on the same column */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define SAME_COL(sq1,sq2) ( ( COL(sq1) == COL(sq2) ) ? (1) : (0) )&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* determine if two squares lie in the same row */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define SAME_ROW(sq1,sq2) ( ( ROW(sq1) == ROW(sq2) ) ? (1) : (0) )&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_0x88_math&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_0x88_math&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_0x88_math includeBody-CPW-Engine_0x88_math includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/0x88&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;0x88&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 28, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_0x88_math&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_0x88_math&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_constants&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_constants&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 13, 2011&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_algebraic</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_algebraic</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_algebraic</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_algebraic</comments>
      <pubDate>Sun, 15 May 2011 18:24:50 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:16:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:16 --&gt;&lt;!-- ws:start:WikiTextTocRule:17: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Description&quot;&gt;Description&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:17 --&gt;&lt;!-- ws:start:WikiTextTocRule:18: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Code&quot;&gt;Code&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:18 --&gt;&lt;!-- ws:start:WikiTextTocRule:19: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Code-int convert_0x88_a(sq, a)&quot;&gt;int convert_0x88_a(sq, a)&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:19 --&gt;&lt;!-- ws:start:WikiTextTocRule:20: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Code-int convert_a_0x88(a)&quot;&gt;int convert_a_0x88(a)&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:20 --&gt;&lt;!-- ws:start:WikiTextTocRule:21: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Code-int algebraic_moves(a)&quot;&gt;int algebraic_moves(a)&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:21 --&gt;&lt;!-- ws:start:WikiTextTocRule:22: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:22 --&gt;&lt;!-- ws:start:WikiTextTocRule:23: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:23 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Algebraic&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Description&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;Description&lt;/h1&gt;
 When communicating with the &lt;a class=&quot;wiki_link&quot; href=&quot;/GUI&quot;&gt;GUI&lt;/a&gt;, the Engine is supposed to use the &lt;a class=&quot;wiki_link&quot; href=&quot;/Algebraic%20Chess%20Notation&quot;&gt;algebraic game notation&lt;/a&gt;. The code on this page is used to translate the positions in the engine native form to the GUI friendly representation and back again.&lt;br /&gt;
&lt;br /&gt;
The algebraic game notation first has 2 characters representing the square the piece comes from (eg.: &amp;quot;e2&amp;quot;). Then 2 characters to indicate the square the piece moves to (eg.: &amp;quot;e4&amp;quot;). And finally, in case of a promotion, the piece the pawn is promoted to ( q | r | b | n ). So a possible starting move for white could be &amp;quot;e2e4&amp;quot;. And a possible promotion move could be &amp;quot;a7a8n&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:6:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Code&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:6 --&gt;Code&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:8:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Code-int convert_0x88_a(sq, a)&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:8 --&gt;int convert_0x88_a(sq, a)&lt;/h2&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int convert_0x88_a(int sq, char * a) {&amp;lt;br/&amp;gt;    a[0] = COL(sq) + &#039;a&#039;;&amp;lt;br/&amp;gt;    a[1] = ROW(sq) + &#039;1&#039;;&amp;lt;br/&amp;gt;    a[2] = 0;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; convert_0x88_a&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; sq, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COL&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;1&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:10:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Code-int convert_a_0x88(a)&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:10 --&gt;int convert_a_0x88(a)&lt;/h2&gt;
 &lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int convert_a_0x88(char * a) {&amp;lt;br/&amp;gt;    int sq = 0;&amp;lt;br/&amp;gt;    sq = a[0] - &#039;a&#039;;&amp;lt;br/&amp;gt;    sq += (a[1] - &#039;1&#039;) * 16;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return sq;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; convert_a_0x88&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; sq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    sq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;1&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:12:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Code-int algebraic_moves(a)&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:12 --&gt;int algebraic_moves(a)&lt;/h2&gt;
 &lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int algebraic_moves(char * a) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    smoves m;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    while ((a[0] &amp;amp;gt;= &#039;a&#039;) &amp;amp;amp;&amp;amp;amp; (a[0] &amp;amp;lt;= &#039;h&#039;)) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        m.from = convert_a_0x88(a);&amp;lt;br/&amp;gt;        m.to = convert_a_0x88(a+2);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        m.piece_from = b.pieces[m.from];&amp;lt;br/&amp;gt;        m.piece_to = b.pieces[m.from];&amp;lt;br/&amp;gt;        m.piece_cap = b.pieces[m.to];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        m.flags = 0;&amp;lt;br/&amp;gt;        m.castle = 0;&amp;lt;br/&amp;gt;        m.ep = 0;&amp;lt;br/&amp;gt;        m.ply = 0;&amp;lt;br/&amp;gt;        m.score = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        switch (a[4]) {&amp;lt;br/&amp;gt;        case &#039;q&#039;: m.piece_to = PIECE_QUEEN; a++; break;&amp;lt;br/&amp;gt;        case &#039;r&#039;: m.piece_to = PIECE_ROOK; a++; break;&amp;lt;br/&amp;gt;        case &#039;b&#039;: m.piece_to = PIECE_BISHOP; a++; break;&amp;lt;br/&amp;gt;        case &#039;n&#039;: m.piece_to = PIECE_KNIGHT; a++; break;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        //castling&amp;lt;br/&amp;gt;        if ((m.piece_from == PIECE_KING) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;            ((m.from == E1 &amp;amp;amp;&amp;amp;amp; (m.to == G1 || m.to == C1)) ||&amp;lt;br/&amp;gt;            (m.from == E8 &amp;amp;amp;&amp;amp;amp; (m.to == G8 || m.to == C8)))) {&amp;lt;br/&amp;gt;                m.flags = MFLAG_CASTLE;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /*ep&amp;lt;br/&amp;gt;            if the moving-piece is a Pawn, the square it moves to is empty and&amp;lt;br/&amp;gt;            it was a diagonal move it has to be an en-passant capture.&amp;lt;br/&amp;gt;        */&amp;lt;br/&amp;gt;        if ((m.piece_from == PIECE_PAWN) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;            (m.piece_cap == PIECE_EMPTY) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;            ((abs(m.from-m.to)==15)||(abs(m.from-m.to)==17))) {&amp;lt;br/&amp;gt;                m.flags = MFLAG_EPCAPTURE;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        move_make(m);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        a += 4;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        while (a[0]==&#039; &#039;) a++;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; algebraic_moves&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    smoves m&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;h&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; convert_a_0x88&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; convert_a_0x88&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        m.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        m.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;q&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_QUEEN&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; a&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;r&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_ROOK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; a&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;b&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_BISHOP&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; a&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;n&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_KNIGHT&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; a&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;//castling&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_KING&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; E1 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; G1 &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; C1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; E8 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; G8 &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; C8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                m.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; MFLAG_CASTLE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/*ep
            if the moving-piece is a Pawn, the square it moves to is empty and
            it was a diagonal move it has to be an en-passant capture.
        */&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                m.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; MFLAG_EPCAPTURE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        a &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; a&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:14:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:14 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:03:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_algebraic&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_algebraic&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_algebraic includeBody-CPW-Engine_algebraic includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Algebraic+Chess+Notation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Algebraic Chess Notation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 25, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_algebraic&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_algebraic&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 15, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Entering+Moves&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Entering Moves&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 7, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:03 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_attacks</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_attacks</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_attacks</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_attacks</comments>
      <pubDate>Tue, 30 Dec 2014 18:39:57 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:12:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:12 --&gt;&lt;!-- ws:start:WikiTextTocRule:13: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#isAttacked&quot;&gt;isAttacked&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:13 --&gt;&lt;!-- ws:start:WikiTextTocRule:14: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#leaperAttack&quot;&gt;leaperAttack&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:14 --&gt;&lt;!-- ws:start:WikiTextTocRule:15: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#straightAttack&quot;&gt;straightAttack&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:15 --&gt;&lt;!-- ws:start:WikiTextTocRule:16: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#diagAttack&quot;&gt;diagAttack&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:16 --&gt;&lt;!-- ws:start:WikiTextTocRule:17: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:17 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Attacks&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This page holds the functions responsible for detecting if a given square is attacked by a given player.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;isAttacked&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;isAttacked&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;0x88_math.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int isAttacked( char byColor, S8 sq ) {&amp;lt;br/&amp;gt;/* pawns */&amp;lt;br/&amp;gt;if ( byColor == WHITE ) {&amp;lt;br/&amp;gt;   if ( IS_SQ( sq + SE ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;        isPiece( WHITE, PAWN, sq + SE )&amp;lt;br/&amp;gt;      )&amp;lt;br/&amp;gt;      return 1;&amp;lt;br/&amp;gt;   if ( IS_SQ( sq + SW ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;        isPiece( WHITE, PAWN, sq + SW )&amp;lt;br/&amp;gt;      )&amp;lt;br/&amp;gt;      return 1;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;else {&amp;lt;br/&amp;gt;   if ( IS_SQ( sq + NE ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;        isPiece( BLACK, PAWN, sq + NE )&amp;lt;br/&amp;gt;      )&amp;lt;br/&amp;gt;      return 1;&amp;lt;br/&amp;gt;   if ( IS_SQ( sq + NW ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;        isPiece( BLACK, PAWN, sq + NW )&amp;lt;br/&amp;gt;      )&amp;lt;br/&amp;gt;      return 1;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;/* knights */&amp;lt;br/&amp;gt;if ( leaperAttack( byColor, sq, KNIGHT ) )&amp;lt;br/&amp;gt;   return 1;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; /* kings */&amp;lt;br/&amp;gt;if ( leaperAttack( byColor, sq, KING ) )&amp;lt;br/&amp;gt;   return 1;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; /* straight line sliders */&amp;lt;br/&amp;gt;    if ( straightAttack( byColor, sq, NORTH ) ||&amp;lt;br/&amp;gt;         straightAttack( byColor, sq, SOUTH ) ||&amp;lt;br/&amp;gt;         straightAttack( byColor, sq, EAST  ) ||&amp;lt;br/&amp;gt;         straightAttack( byColor, sq, WEST  )&amp;lt;br/&amp;gt;       )&amp;lt;br/&amp;gt;       return 1;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; /* diagonal sliders */&amp;lt;br/&amp;gt;    if ( diagAttack( byColor, sq, NE ) ||&amp;lt;br/&amp;gt;         diagAttack( byColor, sq, SE ) ||&amp;lt;br/&amp;gt;         diagAttack( byColor, sq, NW ) ||&amp;lt;br/&amp;gt;         diagAttack( byColor, sq, SW )&amp;lt;br/&amp;gt;       )&amp;lt;br/&amp;gt;       return 1;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;0x88_math.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; byColor, S8 sq &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* pawns */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; WHITE, PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SW &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; WHITE, PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SW &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; BLACK, PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NW &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; BLACK, PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NW &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* knights */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; leaperAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, KNIGHT &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;coMULTI&quot;&gt;/* kings */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; leaperAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, KING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;coMULTI&quot;&gt;/* straight line sliders */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; straightAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, NORTH &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
         straightAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, SOUTH &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
         straightAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, EAST  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
         straightAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, WEST  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;coMULTI&quot;&gt;/* diagonal sliders */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; diagAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, NE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
         diagAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, SE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
         diagAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, NW &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
         diagAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, sq, SW &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:6:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;leaperAttack&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:6 --&gt;leaperAttack&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int leaperAttack( char byColor, S8 sq, char byPiece ) {&amp;lt;br/&amp;gt;    S8 nextSq;&amp;lt;br/&amp;gt;    for ( int dir = 0; dir &amp;amp;lt; 8; dir++ ) {&amp;lt;br/&amp;gt;        nextSq = sq + vector[byPiece][dir];&amp;lt;br/&amp;gt;        if ( IS_SQ(nextSq) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;             isPiece( byColor, byPiece, nextSq )&amp;lt;br/&amp;gt;           )&amp;lt;br/&amp;gt;           return 1;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; leaperAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; byColor, S8 sq, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; byPiece &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    S8 nextSq&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; dir &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; dir &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; dir&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;byPiece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; byColor, byPiece, nextSq &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
           &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:8:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;straightAttack&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:8 --&gt;straightAttack&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int straightAttack(char byColor, S8 sq, int vect) {&amp;lt;br/&amp;gt;    int nextSq = sq + vect;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    while ( IS_SQ(nextSq) ) {&amp;lt;br/&amp;gt;       if (b.color[nextSq] != COLOR_EMPTY ) {&amp;lt;br/&amp;gt;           if ( ( b.color[nextSq] == byColor ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                ( b.pieces[nextSq] == ROOK || b.pieces[nextSq] == QUEEN )&amp;lt;br/&amp;gt;              )&amp;lt;br/&amp;gt;              return 1;&amp;lt;br/&amp;gt;           return 0;&amp;lt;br/&amp;gt;          }&amp;lt;br/&amp;gt;       nextSq = nextSq + vect;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;     return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; straightAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; byColor, S8 sq, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; vect&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vect&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; byColor &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; ROOK &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; QUEEN &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
       nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vect&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:10:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;diagAttack&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:10 --&gt;diagAttack&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int diagAttack(int byColor, S8 sq, int vect) {&amp;lt;br/&amp;gt;    int nextSq = sq + vect;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    while ( IS_SQ( nextSq ) ) {&amp;lt;br/&amp;gt;       if (b.color[ nextSq ] != COLOR_EMPTY ) {&amp;lt;br/&amp;gt;           if ( ( b.color[nextSq] == byColor ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                ( b.pieces[nextSq] == BISHOP || b.pieces[nextSq] == QUEEN )&amp;lt;br/&amp;gt;              )&amp;lt;br/&amp;gt;              return 1;&amp;lt;br/&amp;gt;           return 0;&amp;lt;br/&amp;gt;          }&amp;lt;br/&amp;gt;       nextSq = nextSq + vect;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; diagAttack&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; byColor, S8 sq, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; vect&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vect&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; nextSq &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; nextSq &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; byColor &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; BISHOP &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; QUEEN &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
       nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vect&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_board(0x88)</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_board%280x88%29</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_board%280x88%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_board%280x88%29</comments>
      <pubDate>Tue, 30 Dec 2014 19:03:35 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Board (0x88)&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;0x88_math.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;transposition.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;sboard b;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void clearBoard() {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    //reset b struct&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i=0;i&amp;amp;lt;128;i++) {&amp;lt;br/&amp;gt;        b.pieces[i] = PIECE_EMPTY;&amp;lt;br/&amp;gt;        b.color[i] = COLOR_EMPTY;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    b.castle = 0;&amp;lt;br/&amp;gt;    b.ep     = -1;&amp;lt;br/&amp;gt;    b.ply    = 0;&amp;lt;br/&amp;gt;    b.hash   = 0;&amp;lt;br/&amp;gt;    b.phash  = 0;&amp;lt;br/&amp;gt;    b.stm    = 0;&amp;lt;br/&amp;gt;    b.rep_index=0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // reset perceived values&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    b.PieceMaterial[WHITE] = 0;&amp;lt;br/&amp;gt;    b.PieceMaterial[BLACK] = 0;&amp;lt;br/&amp;gt;    b.PawnMaterial[WHITE]  = 0;&amp;lt;br/&amp;gt;    b.PawnMaterial[BLACK]  = 0;&amp;lt;br/&amp;gt;    b.PcsqMg[WHITE] = 0;&amp;lt;br/&amp;gt;    b.PcsqMg[BLACK] = 0;&amp;lt;br/&amp;gt;    b.PcsqEg[WHITE] = 0;&amp;lt;br/&amp;gt;    b.PcsqEg[BLACK] = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // reset counters&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    for (int i=0;i&amp;amp;lt;6;i++) {&amp;lt;br/&amp;gt;        b.PieceCount[ WHITE ] [ i ] = 0;&amp;lt;br/&amp;gt;        b.PieceCount[ BLACK ] [ i ] = 0;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;/********************************************************************&amp;lt;br/&amp;gt;* fillSq() and clearSq(), beside placing a piece on a given square  *&amp;lt;br/&amp;gt;* or erasing it, must take care for all the incrementally  updated  *&amp;lt;br/&amp;gt;* stuff: hash keys, piece counters, material and pcsq values, king  *&amp;lt;br/&amp;gt;* location.                                                         *&amp;lt;br/&amp;gt;********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void fillSq(U8 color, U8 piece, S8 sq) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // place a piece on the board&amp;lt;br/&amp;gt;    b.pieces[sq] = piece;&amp;lt;br/&amp;gt;    b.color[sq] = color;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    // update king location&amp;lt;br/&amp;gt;    if (piece == KING)&amp;lt;br/&amp;gt;        b.KingLoc[color] = sq;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( piece == PAWN ) { &amp;lt;br/&amp;gt;        // update pawn material&amp;lt;br/&amp;gt;        b.PawnMaterial[color] += e.PIECE_VALUE[piece];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        // update pawn hashkey - please note conversion to a 32-bit integer&amp;lt;br/&amp;gt;        b.phash ^= zobrist.piecesquare[piece][color][sq];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    else {&amp;lt;br/&amp;gt;        // update piece material&amp;lt;br/&amp;gt;        b.PieceMaterial[color] += e.PIECE_VALUE[piece];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // update piece counter&amp;lt;br/&amp;gt;    b.PieceCount[color][piece]++;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // update piece-square value&amp;lt;br/&amp;gt;    b.PcsqMg[color] += e.mgPst[piece][color][sq];&amp;lt;br/&amp;gt;    b.PcsqEg[color] += e.egPst[piece][color][sq];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // update hash key&amp;lt;br/&amp;gt;    b.hash ^= zobrist.piecesquare[piece][color][sq];&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void clearSq(S8 sq) {&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    // set intermediate variables, then do the same &amp;lt;br/&amp;gt;    // as in fillSq(), only backwards&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    U8 color = b.color[sq];&amp;lt;br/&amp;gt;    U8 piece = b.pieces[sq];&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    b.hash ^= zobrist.piecesquare[piece][color][sq];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( piece == PAWN ) { &amp;lt;br/&amp;gt;        b.PawnMaterial[color] -= e.PIECE_VALUE[piece];&amp;lt;br/&amp;gt;        b.phash ^= zobrist.piecesquare[piece][color][sq];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    else &amp;lt;br/&amp;gt;        b.PieceMaterial[color] -= e.PIECE_VALUE[piece];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    b.PcsqMg[color] -= e.mgPst[piece][color][sq];&amp;lt;br/&amp;gt;    b.PcsqEg[color] -= e.egPst[piece][color][sq];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    b.PieceCount[color][piece]&amp;amp;#45;-;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    b.pieces[sq] = PIECE_EMPTY;&amp;lt;br/&amp;gt;    b.color[sq] = COLOR_EMPTY;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int board_loadFromFen(char * fen) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    clearBoard();&amp;lt;br/&amp;gt;    clearHistoryTable();&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    char * f = fen;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    char col = 0;&amp;lt;br/&amp;gt;    char row = 7;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    do {&amp;lt;br/&amp;gt;        switch( f[0] ) {&amp;lt;br/&amp;gt;        case &#039;K&#039;: fillSq(WHITE, KING, SET_SQ(row, col));   col++; break;&amp;lt;br/&amp;gt;        case &#039;Q&#039;: fillSq(WHITE, QUEEN, SET_SQ(row, col));  col++; break;&amp;lt;br/&amp;gt;        case &#039;R&#039;: fillSq(WHITE, ROOK, SET_SQ(row, col));   col++; break;&amp;lt;br/&amp;gt;        case &#039;B&#039;: fillSq(WHITE, BISHOP, SET_SQ(row, col)); col++; break;&amp;lt;br/&amp;gt;        case &#039;N&#039;: fillSq(WHITE, KNIGHT, SET_SQ(row, col)); col++; break;&amp;lt;br/&amp;gt;        case &#039;P&#039;: fillSq(WHITE, PAWN, SET_SQ(row, col));   col++; break;&amp;lt;br/&amp;gt;        case &#039;k&#039;: fillSq(BLACK, KING, SET_SQ(row, col));   col++; break;&amp;lt;br/&amp;gt;        case &#039;q&#039;: fillSq(BLACK, QUEEN, SET_SQ(row, col));  col++; break;&amp;lt;br/&amp;gt;        case &#039;r&#039;: fillSq(BLACK, ROOK, SET_SQ(row, col));   col++; break;&amp;lt;br/&amp;gt;        case &#039;b&#039;: fillSq(BLACK, BISHOP, SET_SQ(row, col)); col++; break;&amp;lt;br/&amp;gt;        case &#039;n&#039;: fillSq(BLACK, KNIGHT, SET_SQ(row, col)); col++; break;&amp;lt;br/&amp;gt;        case &#039;p&#039;: fillSq(BLACK, PAWN, SET_SQ(row, col));   col++; break;&amp;lt;br/&amp;gt;        case &#039;/&#039;: row&amp;amp;#45;-; col=0; break;&amp;lt;br/&amp;gt;        case &#039;1&#039;: col+=1; break;&amp;lt;br/&amp;gt;        case &#039;2&#039;: col+=2; break;&amp;lt;br/&amp;gt;        case &#039;3&#039;: col+=3; break;&amp;lt;br/&amp;gt;        case &#039;4&#039;: col+=4; break;&amp;lt;br/&amp;gt;        case &#039;5&#039;: col+=5; break;&amp;lt;br/&amp;gt;        case &#039;6&#039;: col+=6; break;&amp;lt;br/&amp;gt;        case &#039;7&#039;: col+=7; break;&amp;lt;br/&amp;gt;        case &#039;8&#039;: col+=8; break;&amp;lt;br/&amp;gt;        };&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        f++;&amp;lt;br/&amp;gt;    } while ( f[0] != &#039; &#039; );&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    f++;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (f[0]==&#039;w&#039;) { &amp;lt;br/&amp;gt;        b.stm = WHITE;&amp;lt;br/&amp;gt;    } else { &amp;lt;br/&amp;gt;        b.stm = BLACK; &amp;lt;br/&amp;gt;        b.hash ^= zobrist.color;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    f+=2;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    do {&amp;lt;br/&amp;gt;        switch( f[0] ) {&amp;lt;br/&amp;gt;        case &#039;K&#039;: b.castle |= CASTLE_WK; break;&amp;lt;br/&amp;gt;        case &#039;Q&#039;: b.castle |= CASTLE_WQ; break;&amp;lt;br/&amp;gt;        case &#039;k&#039;: b.castle |= CASTLE_BK; break;&amp;lt;br/&amp;gt;        case &#039;q&#039;: b.castle |= CASTLE_BQ; break;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        f++;&amp;lt;br/&amp;gt;    } while (f[0] != &#039; &#039; );&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    b.hash ^= zobrist.castling[b.castle];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    f++;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (f[0] != &#039;-&#039;) {&amp;lt;br/&amp;gt;        b.ep = convert_a_0x88(f);&amp;lt;br/&amp;gt;        b.hash ^= zobrist.ep[b.ep];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    do { f++; } while (f[0] != &#039; &#039; );&amp;lt;br/&amp;gt;    f++;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    sscanf(f, &amp;amp;quot;%d&amp;amp;quot;, &amp;amp;amp;b.ply);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    b.rep_index = 0;&amp;lt;br/&amp;gt;    b.rep_stack[b.rep_index] = b.hash;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void board_display() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    S8 sq;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    char parray[3][7] = { {&#039;K&#039;,&#039;Q&#039;,&#039;R&#039;,&#039;B&#039;,&#039;N&#039;,&#039;P&#039;},&amp;lt;br/&amp;gt;                          {&#039;k&#039;,&#039;q&#039;,&#039;r&#039;,&#039;b&#039;,&#039;n&#039;,&#039;p&#039;},&amp;lt;br/&amp;gt;                          { 0 , 0 , 0 , 0 , 0,  0, &#039;.&#039;}&amp;lt;br/&amp;gt;                        };&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    printf(&amp;amp;quot;   a b c d e f g h\n\n&amp;amp;quot;);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    for (S8 row=7; row&amp;amp;gt;=0; row&amp;amp;#45;-) {&amp;lt;br/&amp;gt;            &amp;lt;br/&amp;gt;        printf(&amp;amp;quot;%d &amp;amp;quot;, row+1);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        for (S8 col=0; col&amp;amp;lt;8; col++) {&amp;lt;br/&amp;gt;            sq = SET_SQ(row, col);&amp;lt;br/&amp;gt;            printf(&amp;amp;quot; %c&amp;amp;quot;,parray[b.color[sq]][b.pieces[sq]] );&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        printf(&amp;amp;quot;  %d\n&amp;amp;quot;, row+1);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    printf(&amp;amp;quot;\n   a b c d e f g h\n\n&amp;amp;quot;);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;0x88_math.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;transposition.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
sboard b&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; clearBoard&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//reset b struct&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;i&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt;    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;phash&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// reset perceived values&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// reset counters&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;i&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; WHITE &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; i &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; BLACK &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; i &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
* fillSq() and clearSq(), beside placing a piece on a given square  *
* or erasing it, must take care for all the incrementally  updated  *
* stuff: hash keys, piece counters, material and pcsq values, king  *
* location.                                                         *
********************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 color, U8 piece, S8 sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// place a piece on the board&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; piece&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; color&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// update king location&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;piece &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; KING&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; piece &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        &lt;span class=&quot;co1&quot;&gt;// update pawn material&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// update pawn hashkey - please note conversion to a 32-bit integer&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;phash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;piecesquare&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// update piece material&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// update piece counter&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// update piece-square value&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// update hash key&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;piecesquare&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// set intermediate variables, then do the same &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// as in fillSq(), only backwards&lt;/span&gt;
&amp;nbsp;
    U8 color &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    U8 piece &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;piecesquare&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; piece &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;phash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;piecesquare&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; 
        b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;color&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; fen&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    clearBoard&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    clearHistoryTable&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; f &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; fen&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; col &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; row &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; f&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;K&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KING, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;Q&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, QUEEN, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;R&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, ROOK, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;B&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, BISHOP, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;N&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KNIGHT, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;P&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;k&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KING, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;q&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, QUEEN, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;r&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, ROOK, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;b&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, BISHOP, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;n&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KNIGHT, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;p&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;/&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; row&lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;1&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;2&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;3&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;4&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;5&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;6&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;7&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;8&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        f&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; f&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    f&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;w&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; WHITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; BLACK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    f&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; f&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;K&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; CASTLE_WK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;Q&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; CASTLE_WQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;k&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; CASTLE_BK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;q&#039;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; CASTLE_BQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        f&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;castling&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    f&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; convert_a_0x88&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; f&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    f&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;rep_stack&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; board_display&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    S8 sq&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; parray&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;K&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;Q&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;R&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;B&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;N&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;P&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;,
                          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;k&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;q&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;r&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;b&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;n&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;p&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;,
                          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; , &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; , &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; , &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; , &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;   a b c d e f g h&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 row&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; row&lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; row&lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d &amp;quot;&lt;/span&gt;, row&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 col&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            sq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; %c&amp;quot;&lt;/span&gt;,parray&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;  %d&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, row&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;   a b c d e f g h&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_board(0x88)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_board(0x88)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_board(0x88) includeBody-CPW-Engine_board%280x88%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/0x88&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;0x88&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 28, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_board%280x88%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_board(0x88)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_move%280x88%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_move(0x88)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_book</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_book</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_book</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_book</comments>
      <pubDate>Mon, 08 May 2017 16:07:08 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Book&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
This is the &lt;a class=&quot;wiki_link&quot; href=&quot;/Opening%20Book&quot;&gt;opening book&lt;/a&gt; module of the CPW-Engine. Is responsibilities are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;reading opening book in the text format (e2e4 a7a6-d2d4 b7b5 a2a4 c8b7 b1d2, where &amp;quot;-&amp;quot; means that preceeding move is not to be played&lt;/li&gt;&lt;li&gt;filtering out illegal moves from the text file and warning user about them&lt;/li&gt;&lt;li&gt;choosing the opening move out of possible alternatives (either completely &lt;a class=&quot;wiki_link&quot; href=&quot;/Pseudorandom%20Number%20Generator&quot;&gt;randomly&lt;/a&gt; or based on frequency)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Obviously, initializing a book takes some time (a couple of seconds in case of 15.000 moves) and really efficiten method would be to read and write opening book in the internal format. However, even it this case the code presented here, after some modification, would be useful for feeding moves into the opening book.&lt;br /&gt;
&lt;br /&gt;
See also &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_book_h&quot;&gt;CPW-Engine_book_h&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;book.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;#define BOOK_SIZE 36000&amp;lt;br/&amp;gt;#define EXCLUDED -1&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 start_hash;&amp;lt;br/&amp;gt;int book_index;&amp;lt;br/&amp;gt;int book_move_count;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;struct sBook {&amp;lt;br/&amp;gt;  U64 hash;&amp;lt;br/&amp;gt;  smove move;&amp;lt;br/&amp;gt;  int freq;&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;sBook book[BOOK_SIZE];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;enum eproto {&amp;lt;br/&amp;gt;    PROTO_NOTHING,&amp;lt;br/&amp;gt;    PROTO_XBOARD,&amp;lt;br/&amp;gt;    PROTO_UCI&amp;lt;br/&amp;gt;} extern mode;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void initBook() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_index = 0;&amp;lt;br/&amp;gt;    book_move_count = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // if we want to have internal book even though the book file is missing,&amp;lt;br/&amp;gt;    // we might add a couple of lines like that&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    book_loadInternal();&amp;lt;br/&amp;gt;    readBookFile();&amp;lt;br/&amp;gt;    board_loadFromFen(STARTFEN);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void readBookFile() {&amp;lt;br/&amp;gt;      FILE *cpw_book; &amp;lt;br/&amp;gt;      char line[256];&amp;lt;br/&amp;gt;      int line_no = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;      /* if the book file does not exist, then exit */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;      if ( (cpw_book = fopen(&amp;amp;quot;cpw_book.txt&amp;amp;quot;, &amp;amp;quot;r&amp;amp;quot;)) == NULL ) {&amp;lt;br/&amp;gt;          printf(&amp;amp;quot;Cannot open cpw_book.txt, only small internal book will be used \n&amp;amp;quot;);&amp;lt;br/&amp;gt;         return;&amp;lt;br/&amp;gt;      }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;      /* process book file line by line */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;      while ( fgets(line, 250, cpw_book) ) {&amp;lt;br/&amp;gt;            ++line_no;&amp;lt;br/&amp;gt;            if(line[0] == &#039;;&#039;) continue; // don&#039;t process comment lines&amp;lt;br/&amp;gt;            book_addline( line_no, line );&amp;lt;br/&amp;gt;      }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;      printf(&amp;amp;quot;Loaded %d book moves\n&amp;amp;quot;, book_move_count);&amp;lt;br/&amp;gt; }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void book_addline( int line_no, char * movestring ) {&amp;lt;br/&amp;gt;     char local_string[5];&amp;lt;br/&amp;gt;     &amp;lt;br/&amp;gt;     board_loadFromFen( STARTFEN );&amp;lt;br/&amp;gt;     int limit = (int) strlen( movestring );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     for (int i = 0; i &amp;amp;lt; limit / 5 + 1; i++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     local_string[0] = movestring[5*i];&amp;lt;br/&amp;gt;     local_string[1] = movestring[5*i+1];&amp;lt;br/&amp;gt;     local_string[2] = movestring[5*i+2];&amp;lt;br/&amp;gt;     local_string[3] = movestring[5*i+3];&amp;lt;br/&amp;gt;     local_string[4] = movestring[5*i+4];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     /*********************************************&amp;lt;br/&amp;gt;     * On finding an illegal move in a book file, *&amp;lt;br/&amp;gt;     * report line number and move sequence.      *&amp;lt;br/&amp;gt;     *********************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     if ( com_ismove( local_string ) ) {&amp;lt;br/&amp;gt;         if ( !book_add( local_string ) ) { &amp;lt;br/&amp;gt;             printf(&amp;amp;quot;book file error in line %d: &amp;amp;quot;, line_no);&amp;lt;br/&amp;gt;             printf(movestring); &amp;lt;br/&amp;gt;             printf(&amp;amp;quot;\n&amp;amp;quot;); &amp;lt;br/&amp;gt;         };&amp;lt;br/&amp;gt;     }&amp;lt;br/&amp;gt;     else&amp;lt;br/&amp;gt;        return;  &amp;lt;br/&amp;gt;     }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int book_add( char * movestring ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************** &amp;lt;br/&amp;gt;    *  Don&#039;t record anything if a move has been already recorded. *&amp;lt;br/&amp;gt;    *  Make a move, because a new one is likely to be a couple    *&amp;lt;br/&amp;gt;    *  of steps further down the path, and exit.                  *&amp;lt;br/&amp;gt;    **************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( book_present( movestring ) ) {&amp;lt;br/&amp;gt;        move_make( strToMove( movestring ) );&amp;lt;br/&amp;gt;        return 1;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    smove curr_move = strToMove( movestring );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( move_isLegal( curr_move ) ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       book[book_index].hash = b.hash;&amp;lt;br/&amp;gt;       book[book_index].move = curr_move;&amp;lt;br/&amp;gt;       ++book_move_count;&amp;lt;br/&amp;gt;       &amp;lt;br/&amp;gt;       if (movestring[4] == &#039;-&#039;) &amp;lt;br/&amp;gt;          book[book_index].freq = EXCLUDED;&amp;lt;br/&amp;gt;       else&amp;lt;br/&amp;gt;          book[book_index].freq = 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       ++book_index;&amp;lt;br/&amp;gt;       &amp;lt;br/&amp;gt;       move_make( strToMove( movestring ) ); &amp;lt;br/&amp;gt;       return 1;&amp;lt;br/&amp;gt;    } &amp;lt;br/&amp;gt;    else&amp;lt;br/&amp;gt;        return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int book_present( char * movestring ) {&amp;lt;br/&amp;gt;    U64 curr_hash = b.hash;&amp;lt;br/&amp;gt;    smove curr_move = strToMove( movestring );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; book_index; i++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( book[i].hash == curr_hash &amp;amp;amp;&amp;amp;amp; &amp;lt;br/&amp;gt;             book[i].move.from == curr_move.from &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;             book[i].move.to   == curr_move.to ) {&amp;lt;br/&amp;gt;                &amp;lt;br/&amp;gt;            /* see whether a move has been marked as excluded */&amp;lt;br/&amp;gt;            if ( movestring[4] == &#039;-&#039; ) &amp;lt;br/&amp;gt;                book[i].freq = EXCLUDED;&amp;lt;br/&amp;gt;            else {&amp;lt;br/&amp;gt;                if ( book[i].freq &amp;amp;gt; EXCLUDED )&amp;lt;br/&amp;gt;                   ++book[i].freq; &amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;            &amp;lt;br/&amp;gt;            return 1;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int book_getMaxFreq() {&amp;lt;br/&amp;gt;    int result = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; BOOK_SIZE; i++) {&amp;lt;br/&amp;gt;        if ( book[i].hash == b.hash ) {&amp;lt;br/&amp;gt;            if ( book[i].freq &amp;amp;gt; result )&amp;lt;br/&amp;gt;                result = book[i].freq;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int getBookMove( int book_type ) {&amp;lt;br/&amp;gt;    int result = 0;&amp;lt;br/&amp;gt;    int priority = EXCLUDED;&amp;lt;br/&amp;gt;    int temp;&amp;lt;br/&amp;gt;    smove book_move;&amp;lt;br/&amp;gt;    char move_string[6];&amp;lt;br/&amp;gt;    int max_freq = book_getMaxFreq();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( book_type == BOOK_NONE ) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    srand( gettime() );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; BOOK_SIZE; i++) {&amp;lt;br/&amp;gt;        if ( book[i].hash == b.hash ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            /****************************************************&amp;lt;br/&amp;gt;            * Debug code, showing possible choices as well as   *&amp;lt;br/&amp;gt;            * move frequencies (console mode only)              *&amp;lt;br/&amp;gt;            ****************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            if ( mode == PROTO_NOTHING ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;               convert_0x88_a( book[i].move.from, move_string );&amp;lt;br/&amp;gt;               convert_0x88_a( book[i].move.to  , move_string+2 );&amp;lt;br/&amp;gt;               printf( move_string );&amp;lt;br/&amp;gt;            &amp;lt;br/&amp;gt;               if ( book[i].freq == EXCLUDED ) &amp;lt;br/&amp;gt;                   printf(&amp;amp;quot;?&amp;amp;quot;);&amp;lt;br/&amp;gt;               else&amp;lt;br/&amp;gt;                   printf(&amp;amp;quot;(%d)&amp;amp;quot;, book[i].freq);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;               printf(&amp;amp;quot; &amp;amp;quot;);&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            /****************************************************&amp;lt;br/&amp;gt;            * Get the value used to decide which move to  play. *&amp;lt;br/&amp;gt;            * If book is meant to be broad, it will be a random *&amp;lt;br/&amp;gt;            * value, distributed evenly between moves that  are *&amp;lt;br/&amp;gt;            * not  excluded. When using narrow book,  frequency *&amp;lt;br/&amp;gt;            * of a move will be taken into account.             *&amp;lt;br/&amp;gt;            ****************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            if ( book_type == BOOK_NARROW )&amp;lt;br/&amp;gt;               temp = ( abs( rand() ) / max_freq ) * ( book[i].freq );&amp;lt;br/&amp;gt;            else&amp;lt;br/&amp;gt;               temp = abs( rand() );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            /****************************************************&amp;lt;br/&amp;gt;            * If new move is backed up by a greater number,     *&amp;lt;br/&amp;gt;            * it replaces the old one.                          *&amp;lt;br/&amp;gt;            ****************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            if ( ( temp &amp;amp;gt; priority ) &amp;amp;amp;&amp;amp;amp; &amp;lt;br/&amp;gt;                 ( book[i].freq != EXCLUDED ) &amp;lt;br/&amp;gt;               ) {&amp;lt;br/&amp;gt;                priority = temp;&amp;lt;br/&amp;gt;                book_move = book[i].move;&amp;lt;br/&amp;gt;                result = 1;&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    printf(&amp;amp;quot;\n&amp;amp;quot;);&amp;lt;br/&amp;gt;    if (result) com_sendmove( book_move );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void book_loadInternal() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Four knights&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 b1c3 g8f6 g1f3 b8c6 f1b5 f8b4 e1g1 e8g8 d2d3 d7d6 c1g5 b4c3 b2c3 d8e7 f1e1 c6d8 d3d4 d8e6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Italian&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 c2c3 g8f6 d2d4 e5d4 c3d4 c5b4 c1d2 b4d2 b1d2 d7d5&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 c2c3 g8f6 d2d3 d7d6 b2b4 c5b6 a2a4 a7a5 b4b5 c6e7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 d2d3 g8f6 c2c3&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Two knights&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 g8f6 f3g5 d7d5 e4d5 c6a5 c4b5 c7c6 d5c6 b7c6 b5e2 h7h6 g5f3 e5e4 f3e5 f8d6 f2f4 e4f3 e5f3 e8g8 d2d4 c6c5&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 g8f6 d2d4 e5d4 e1g1 f6e4 f1e1 d7d5 c4d5 d8d5 b1c3 d5h5 c3e4 c8e6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 g8f6 d2d3 f8e7 e1g1 e8g8 c2c3 d7d6 c4b3&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Scotch&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 g8f6 d4c6 b7c6 e4e5 d8e7 d1e2 f6d5 c2c4 c8a6 g2g3 g7g6 b2b3 f8g7 c1b2 e8g8 f1g2 a8e8 e1g1 &amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 f8c5 c1e3 d8f6 c2c3 g8e7 g2g3 e8g8 f1g2&amp;amp;quot;);&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    // Ruy Lopez&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 a7a6 b5a4 g8f6 e1g1 f8e7 f1e1 b7b5 a4b3 d7d6 c2c3 e8g8 h2h3 c6a5 b3c2 c7c5 d2d4 d8c7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 f8c5 c2c3 g8f6 e1g1 e8g8 d2d4 c5b6 f1e1 d7d6 h2h3 c6e7 b1d2&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f8c5 f3e5 c6e5 d2d4 c7c6 d4e5 f6e4 b5d3 d7d5 e5d6 e4f6 f1e1&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f6e4 d2d4 f8e7 d1e2 e4d6 b5c6 b7c6 d4e5 d6b7 b1c3 e8g8 f3d4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 a7a6 b5a4 g8f6 e1g1 f6e4 d2d4 b7b5 a4b3 d7d5 d4e5 c8e6 c2c3 e4c5 b3c2 e6g4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 a7a6 b5a4 g8f6 e1g1 f8e7 f1e1 b7b5 a4b3 d7d6 c2c3 e8g8 h2h3 c8b7 d2d4 f8e8 b1d2 e7f8 a2a3 h7h6 b3c2 c6b8 b2b4 b8d7 c1b2 g7g6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Petroff&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 g8f6 f3e5 d7d6 e5f3 f6e4 d2d4 d6d5 f1d3 b8c6 e1g1 c8g4 c2c4 e4f6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 g8f6 f3e5 d7d6 e5f3 f6e4 d2d4 d6d5 f1d3 b8c6 e1g1 f8e7 c2c4 c6b4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0, &amp;amp;quot;e2e4 e7e5 g1f3 g8f6 f3e5 d7d6 e5f3 f6e4 b1c3 e4c3 d2c3&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e5 g1f3 g8f6 d2d4 f6e4 f1d3 d7d5 f3e5 b8d7 e5d7 c8d7 e1g1 f8d6 c2c4 c7c6 b1c3 e4c3 b2c3&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Sicilian&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 c2c3 d7d5 e4d5 d8d5 d2d4 e7e6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 c2c3 g8f6 e4e5 f6d5 d2d4 c5d4 g1f3 e7e6 c3d4 b7b6 b1c3 d5c3 b2c3 d8c7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 g8f6 b1c3 a7a6 f1e2 e7e5 d4b3 f8e7 e1g1 e8g8 a2a4 b7b6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 b1c3 b8c6 g2g3 g7g6 f1g2 f8g7 d2d3 e7e6 c1e3 d7d6 g1e2 c6d4 d1d2&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 g8f6 b1c3 a7a6 c1g5 e7e6 d1d2 f8e7 e1c1 e8g8&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 g8f6 b1c3 a7a6 g2g3 e7e5 d4e2 b7b5 f1g2 c8b7 e1g1 b8d7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 g1f3 b8c6 d2d4 c5d4 f3d4 g7g6 b1c3 f8g7 c1e3 g8f6 f1c4 e8g8&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 g1f3 b8c6 d2d4 c5d4 f3d4 g8f6 b1c3 d7d6 f1e2 e7e5 d4b3 f8e7 e1g1 e8g8 c1e3 c8e6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c5 g1f3 b8c6 d2d4 c5d4 f3d4 g8f6 b1c3 d7d6 f1e2 g7g6 c1e3 f8g7 e1g1 e8g8 d4b3 c8e6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // French&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 e4e5 c7c5 c2c3 b8c6 g1f3 d8b6 a2a3 c5c4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 g8f6 c1g5 f8e7 e4e5 f6d7 g5e7 d8e7 f2f4 e8g8 d1d2 c7c5 g1f3 b8c6 e1c1 c5c4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 d5e4 c3e4 b8d7 g1f3 g8f6 e4f6 d7f6 f1d3 b7b6 d1e2 c8b7? c1g5 f8e7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 f8b4 e4e5 g8e7 a2a3 b4c3 b2c3 c7c5 g1f3 b8c6 a3a4 d8a5 d1d2 c8d7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 f8b4 e4e5 g8e7 a2a3 b4c3 b2c3 c7c5 a3a4 b8c6 g1f3 d8a5 c1d2 c8d7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 f8b4 e4e5 c7c5 a2a3 b4c3 b2c3 g8e7 d1g4 d8c7 g4g7 h8g8 g7h7 c5d4 g1e2 b8c6 f2f4 c8d7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1d2 c7c5 e4d5 e6d5 g1f3 b8c6 f1b5 f8d6 d4c5 d6c5 e1g1 g8e7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1d2 c7c5 g1f3 g8f6 e4d5 e6d5 f1b5 c8d7 b5d7 b8d7 e1g1 f8e7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 e7e6 d2d4 d7d5 b1d2 g8f6 e4e5 f6d7 f1d3 c7c5 c2c3 b8c6 g1e2 c5d4 c3d4 f7f6 e5f6 d7f6 e1g1 f8d6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Caro-Kann&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 b8d7 g1f3 g8f6 e4f6 d7f6 f3e5&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 b1c3 d7d5 d2d4 d5e4 c3e4 b8d7 f1c4 g8f6 e4g5 e7e6 d1e2 d7b6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 b1c3 d7d5 d2d4 d5e4 c3e4 b8d7 e4g5 g8f6 f1d3 e7e6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 h2h4 h7h6 g1f3 g8f6-f3e5 g6h7 f1d3 b8d7 d3h7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 h2h4 h7h6 g1f3 b8d7 h4h5 g6h7 f1d3 h7d3 d1d3 g8f6 c1d2 e7e6 e1c1&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 h2h4 h7h6 g1f3 b8d7 h4h5 g6h7 f1d3 h7d3 d1d3 e7e6 c1d2 g8f6 e1c1&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 g1f3 b8d7 h2h4 h7h6 f1d3 g6d3 d1d3 e7e6 c1d2 g8f6 e1c1&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 b1d2 d5e4 d2e4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 e4d5 c6d5 c2c4 g8f6 b1c3 e7e6 g1f3&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 e4d5 c6d5 c2c4 g8f6 b1c3 b8c6 c1g5 e7e6 c4c5 f8e7 f1b5 e8g8 g1f3 f6e4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 d2d4 d7d5 e4e5 c8f5 f1d3 f5d3 d1d3 e7e6 b1c3 d8b6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 c7c6 b1c3 d7d5 g1f3 c8g4 h2h3 g4f3 d1f3 e7e6 d2d4 g8f6 f1d3 d5e4 c3e4 d8d4 c2c3 d4d8&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Pirc and modern&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d6 e2e4 g8f6 b1c3 g7g6 f1c4 c7c6 d1e2 f8g7 g1f3 e8g8 c1g5 b7b5 c4d3 d8c7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;e2e4 d7d6 d2d4 g8f6 b1c3 g7g6 c1g5 f8g7 d1d2 b8d7 e1c1 e7e5 d4e5 d6e5 g1f3 h7h6 g5h4 g6g5 h4g3 d8e7&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // QGA&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 c2c4 d5c4 g1f3 g8f6 e2e3 e7e6 f1c4 c7c5 e1g1 a7a6 d1e2 b7b5 c4d3 c5d4 e3d4 b8c6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // QGD&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 f8e7 g1f3 g8f6 c4d5 e6d5&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 e7e6 d2d4 d7d5 b1c3 c7c5 c4d5 e6d5 g1f3 b8c6 g2g3 g8f6 f1g2 f8e7 e1g1 e8g8&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 e7e6 b1c3 d7d5 d2d4 g8f6 c1g5 f8e7 e2e3 e8g8 g1f3 b8d7 a1c1 c7c6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 c1g5 b8d7 c4d5 e6d5 e2e3 c7c6 f1d3 f8e7 d1c2 e8g8 g1e2 f8e8&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 c1g5 b8d7 e2e3 c7c6 g1f3 d8a5 f3d2 f8b4 d1c2 e8g8 g5h4 c6c5&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 g1f3 f8e7 c4d5 e6d5 c1g5 e8g8&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Slav&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 c2c4 c7c6 b1c3 g8f6 g1f3 d5c4 a2a4 c8f5 f3e5 e7e6 f2f3 f8b4 c1g5 h7h6 g5f6 d8f6 e2e4 f5h7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 c2c4 c7c6 g1f3 g8f6 b1c3 e7e6 e2e3 b8d7 f1d3 f8d6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Catalan&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 e7e6 c2c4 d7d5 g2g3 g8f6 g1f3 f8e7 f1g2 e8g8 e1g1 f6d7 d1c2 c7c6 b1d2 b7b6 e2e4 c8b7&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Nimzo-Indian&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 d1c2 c7c5 d4c5 e8g8 a2a3 b4c5 g1f3 b7b6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 d1c2 e8g8 a2a3 b4c3 c2c3 b7b6 c1g5 c8b7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 g1f3 b7b6 g2g3 c8b7 f1g2&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 a2a3 b4c3 b2c3 e8g8 f2f3 d7d5 c4d5 e6d5 e2e3 c8f5 g1e2 b8d7 e2g3 f5g6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 c1d2 e8g8 e2e3 d7d5 g1f3 c7c5 a2a3 b4c3 d2c3 f6e4 a1c1 e4c3 c1c3 c5d4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 e2e3 e8g8 f1d3 d7d5 g1f3 c7c5 e1g1 b8c6 a2a3 b4c3 b2c3 d5c4 d3c4 d8c7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 d1c2 d7d5 a2a3 b4c3 c2c3 b8c6 g1f3 f6e4 c3b3 c6a5 b3a4 c7c6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Queen&#039;s Indian&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8b7 f1g2 f8e7 e1g1 e8g8 b1c3 f6e4 d1c2 e4c3 c2c3&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 e2e3 c8b7 f1d3 f8e7 b1c3 d7d5 e1g1 e8g8 d1e2 b8d7&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // King&#039;s Indian&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 f2f3 e8g8 c1e3 e7e5 d4d5 f6h5 d1d2 f7f5 e1c1 b8d7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 g1f3 e8g8 f1e2 e7e5 d4d5 a7a5&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 g2g3 f8g7 f1g2 e8g8 b1c3 d7d6 g1f3 b8d7 e1g1 e7e5 e2e4 c7c6 h2h3 d8b6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 f2f4 c7c5 g1f3 e8g8 d4d5 e7e6 f1d3 e6d5 c4d5 d8b6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 g1f3 e8g8 f1e2 e7e5 e1g1 b8c6 d4d5 c6e7 f3e1 f6e8 f2f3 f7f5&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 g1f3 e8g8 c1f4 d7d6 h2h3 b8d7 e2e3 c7c6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Grunfeld&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 d7d5 c1f4 f8g7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 d7d5 c4d5 f6d5 e2e4 d5c3 b2c3 c7c5 f1c4 f8g7 g1e2 e8g8 e1g1 c5d4 c3d4 b8c6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 d7d5 g1f3 f8g7 d1b3 d5c4 b3c4 e8g8 e2e4 c8g4 c1e3 f6d7 e1c1 b8c6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Benoni&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 g8f6 c2c4 c7c5 d4d5 e7e6 b1c3 e6d5 c4d5 d7d6 e2e4 g7g6 f1d3 f8g7 g1e2 e8g8 e1g1 a7a6 a2a4 d8c7&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Dutch&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 f7f5 g2g3 e7e6 f1g2 g8f6 g1f3 f8e7 e1g1 e8g8 c2c4 d7d6 b1c3 d8e8 d1c2 e8h5 b2b3 b8c6 c1a3 a7a5&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Queen&#039;s Pawn&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;d2d4 d7d5 g1f3 g8f6 c1f4 c7c5 e2e3 b8c6 c2c3 d8b6 d1c1 c8f5 d4c5 b6c5 b1d2 a8c8 f3d4 c6d4 e3d4 c5b6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // English&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 e7e5 b1c3 g8f6 g1f3 b8c6 e2e4 f8b4 d2d3 d7d6 f1e2 e8g8 e1g1 b4c3 b2c3 d8e7&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 e7e5 b1c3 g8f6 g1f3 b8c6 g2g3 d7d5 c4d5 f6d5 f1g2 d5b6 e1g1 f8e7 d2d3 e8g8 c1e3 f7f5&amp;amp;quot;);                                                     &amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 g8f6 b1c3 d7d5 c4d5 f6d5 e2e4 d5f4 f1c4 c8e6 c4e6 f7e6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 g8f6 b1c3 e7e5 g1f3 b8c6 g2g3 f8c5 f1g2 d7d6 e1g1 e8g8 d2d3 h7h6&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 g8f6 b1c3 e7e5 g1f3 b8c6 g2g3 f8b4 f1g2 e8g8 e1g1 e5e4 f3e1 b4c3 d2c3 h7h6 e1c2 b7b6&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;c2c4 c7c5 g1f3 b8c6 b1c3 g8f6 g2g3 g7g6 f1g2 f8g7 e1g1 e8g8 d2d4 c5d4 f3d4 c6d4 d1d4 d7d6 d4d3&amp;amp;quot;);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // Reti&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;g1f3 d7d5 g2g3 g8f6 f1g2 g7g6 e1g1 f8g7 d2d3 e8g8 b1d2 b8c6 e2e4 e7e5 c2c3 a7a5 f1e1 d5e4 d3e4&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;g1f3 d7d5 c2c4 e7e6 g2g3 g8f6 f1g2 f8e7 e1g1 e8g8 b2b3 c7c5 c4d5 f6d5 c1b2 b8c6 d2d4 b7b6 b1c3 d5c3&amp;amp;quot;);&amp;lt;br/&amp;gt;    book_addline(0,&amp;amp;quot;g1f3 d7d5 c2c4 d5c4 e2e3 c7c5 f1c4 e7e6 e1g1 g8f6 b2b3 b8c6 c1b2 a7a6 a2a4 f8e7&amp;amp;quot;);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;book.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#define BOOK_SIZE 36000&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define EXCLUDED -1&lt;/span&gt;
&amp;nbsp;
U64 start_hash&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_index&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_move_count&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;struct&lt;/span&gt; sBook &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  U64 hash&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  smove move&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; freq&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
sBook book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BOOK_SIZE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; eproto &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    PROTO_NOTHING,
    PROTO_XBOARD,
    PROTO_UCI
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; mode&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; initBook&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    book_index &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_move_count &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// if we want to have internal book even though the book file is missing,&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// we might add a couple of lines like that&lt;/span&gt;
&amp;nbsp;
    book_loadInternal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    readBookFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;STARTFEN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; readBookFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw4&quot;&gt;FILE&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;cpw_book&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
      &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; line&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; line_no &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;coMULTI&quot;&gt;/* if the book file does not exist, then exit */&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cpw_book &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;fopen&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;cpw_book.txt&amp;quot;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Cannot open cpw_book.txt, only small internal book will be used &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;coMULTI&quot;&gt;/* process book file line by line */&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;fgets&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;nu0&quot;&gt;250&lt;/span&gt;, cpw_book&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;line_no&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// don&#039;t process comment lines&lt;/span&gt;
            book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; line_no, line &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Loaded %d book moves&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, book_move_count&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; line_no, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; local_string&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; STARTFEN &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; limit &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; limit &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
     local_string&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     local_string&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     local_string&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     local_string&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     local_string&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;coMULTI&quot;&gt;/*********************************************
     * On finding an illegal move in a book file, *
     * report line number and move sequence.      *
     *********************************************/&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; com_ismove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; local_string &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;book_add&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; local_string &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
             &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;book file error in line %d: &amp;quot;&lt;/span&gt;, line_no&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
             &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;movestring&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
             &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  
     &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_add&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************** 
    *  Don&#039;t record anything if a move has been already recorded. *
    *  Make a move, because a new one is likely to be a couple    *
    *  of steps further down the path, and exit.                  *
    **************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book_present&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; strToMove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    smove curr_move &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; strToMove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; move_isLegal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; curr_move &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
       book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;book_index&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;book_index&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;move&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; curr_move&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;book_move_count&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;movestring&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
          book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;book_index&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; EXCLUDED&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
          book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;book_index&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;book_index&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; strToMove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
       &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_present&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    U64 curr_hash &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    smove curr_move &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; strToMove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; book_index&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; curr_hash &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
             book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;move&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; curr_move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;move&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; curr_move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;coMULTI&quot;&gt;/* see whether a move has been marked as excluded */&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;-&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
                book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; EXCLUDED&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; EXCLUDED &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                   &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_getMaxFreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; BOOK_SIZE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; result &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; getBookMove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_type &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; priority &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; EXCLUDED&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; temp&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    smove book_move&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; move_string&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; max_freq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; book_getMaxFreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book_type &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; BOOK_NONE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;srand&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; BOOK_SIZE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************
            * Debug code, showing possible choices as well as   *
            * move frequencies (console mode only)              *
            ****************************************************/&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PROTO_NOTHING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
               convert_0x88_a&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;move&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;, move_string &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               convert_0x88_a&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;move&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;  , move_string&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; move_string &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
               &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; EXCLUDED &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
                   &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;?&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
                   &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;(%d)&amp;quot;&lt;/span&gt;, book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
               &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************
            * Get the value used to decide which move to  play. *
            * If book is meant to be broad, it will be a random *
            * value, distributed evenly between moves that  are *
            * not  excluded. When using narrow book,  frequency *
            * of a move will be taken into account.             *
            ****************************************************/&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book_type &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; BOOK_NARROW &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
               temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;rand&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; max_freq &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
               temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;rand&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************
            * If new move is backed up by a greater number,     *
            * it replaces the old one.                          *
            ****************************************************/&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; temp &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; priority &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
                 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; EXCLUDED &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
               &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                priority &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; temp&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                book_move &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; book&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;move&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; com_sendmove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; book_move &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; book_loadInternal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Four knights&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 b1c3 g8f6 g1f3 b8c6 f1b5 f8b4 e1g1 e8g8 d2d3 d7d6 c1g5 b4c3 b2c3 d8e7 f1e1 c6d8 d3d4 d8e6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Italian&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 c2c3 g8f6 d2d4 e5d4 c3d4 c5b4 c1d2 b4d2 b1d2 d7d5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 c2c3 g8f6 d2d3 d7d6 b2b4 c5b6 a2a4 a7a5 b4b5 c6e7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 d2d3 g8f6 c2c3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Two knights&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 g8f6 f3g5 d7d5 e4d5 c6a5 c4b5 c7c6 d5c6 b7c6 b5e2 h7h6 g5f3 e5e4 f3e5 f8d6 f2f4 e4f3 e5f3 e8g8 d2d4 c6c5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 g8f6 d2d4 e5d4 e1g1 f6e4 f1e1 d7d5 c4d5 d8d5 b1c3 d5h5 c3e4 c8e6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1c4 g8f6 d2d3 f8e7 e1g1 e8g8 c2c3 d7d6 c4b3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Scotch&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 g8f6 d4c6 b7c6 e4e5 d8e7 d1e2 f6d5 c2c4 c8a6 g2g3 g7g6 b2b3 f8g7 c1b2 e8g8 f1g2 a8e8 e1g1 &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 f8c5 c1e3 d8f6 c2c3 g8e7 g2g3 e8g8 f1g2&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Ruy Lopez&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 a7a6 b5a4 g8f6 e1g1 f8e7 f1e1 b7b5 a4b3 d7d6 c2c3 e8g8 h2h3 c6a5 b3c2 c7c5 d2d4 d8c7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 f8c5 c2c3 g8f6 e1g1 e8g8 d2d4 c5b6 f1e1 d7d6 h2h3 c6e7 b1d2&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f8c5 f3e5 c6e5 d2d4 c7c6 d4e5 f6e4 b5d3 d7d5 e5d6 e4f6 f1e1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f6e4 d2d4 f8e7 d1e2 e4d6 b5c6 b7c6 d4e5 d6b7 b1c3 e8g8 f3d4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 a7a6 b5a4 g8f6 e1g1 f6e4 d2d4 b7b5 a4b3 d7d5 d4e5 c8e6 c2c3 e4c5 b3c2 e6g4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 b8c6 f1b5 a7a6 b5a4 g8f6 e1g1 f8e7 f1e1 b7b5 a4b3 d7d6 c2c3 e8g8 h2h3 c8b7 d2d4 f8e8 b1d2 e7f8 a2a3 h7h6 b3c2 c6b8 b2b4 b8d7 c1b2 g7g6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Petroff&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 g8f6 f3e5 d7d6 e5f3 f6e4 d2d4 d6d5 f1d3 b8c6 e1g1 c8g4 c2c4 e4f6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 g8f6 f3e5 d7d6 e5f3 f6e4 d2d4 d6d5 f1d3 b8c6 e1g1 f8e7 c2c4 c6b4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 g8f6 f3e5 d7d6 e5f3 f6e4 b1c3 e4c3 d2c3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e5 g1f3 g8f6 d2d4 f6e4 f1d3 d7d5 f3e5 b8d7 e5d7 c8d7 e1g1 f8d6 c2c4 c7c6 b1c3 e4c3 b2c3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Sicilian&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 c2c3 d7d5 e4d5 d8d5 d2d4 e7e6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 c2c3 g8f6 e4e5 f6d5 d2d4 c5d4 g1f3 e7e6 c3d4 b7b6 b1c3 d5c3 b2c3 d8c7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 g8f6 b1c3 a7a6 f1e2 e7e5 d4b3 f8e7 e1g1 e8g8 a2a4 b7b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 b1c3 b8c6 g2g3 g7g6 f1g2 f8g7 d2d3 e7e6 c1e3 d7d6 g1e2 c6d4 d1d2&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 g8f6 b1c3 a7a6 c1g5 e7e6 d1d2 f8e7 e1c1 e8g8&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 g8f6 b1c3 a7a6 g2g3 e7e5 d4e2 b7b5 f1g2 c8b7 e1g1 b8d7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 g1f3 b8c6 d2d4 c5d4 f3d4 g7g6 b1c3 f8g7 c1e3 g8f6 f1c4 e8g8&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 g1f3 b8c6 d2d4 c5d4 f3d4 g8f6 b1c3 d7d6 f1e2 e7e5 d4b3 f8e7 e1g1 e8g8 c1e3 c8e6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c5 g1f3 b8c6 d2d4 c5d4 f3d4 g8f6 b1c3 d7d6 f1e2 g7g6 c1e3 f8g7 e1g1 e8g8 d4b3 c8e6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// French&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 e4e5 c7c5 c2c3 b8c6 g1f3 d8b6 a2a3 c5c4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 g8f6 c1g5 f8e7 e4e5 f6d7 g5e7 d8e7 f2f4 e8g8 d1d2 c7c5 g1f3 b8c6 e1c1 c5c4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 d5e4 c3e4 b8d7 g1f3 g8f6 e4f6 d7f6 f1d3 b7b6 d1e2 c8b7? c1g5 f8e7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 f8b4 e4e5 g8e7 a2a3 b4c3 b2c3 c7c5 g1f3 b8c6 a3a4 d8a5 d1d2 c8d7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 f8b4 e4e5 g8e7 a2a3 b4c3 b2c3 c7c5 a3a4 b8c6 g1f3 d8a5 c1d2 c8d7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1c3 f8b4 e4e5 c7c5 a2a3 b4c3 b2c3 g8e7 d1g4 d8c7 g4g7 h8g8 g7h7 c5d4 g1e2 b8c6 f2f4 c8d7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1d2 c7c5 e4d5 e6d5 g1f3 b8c6 f1b5 f8d6 d4c5 d6c5 e1g1 g8e7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1d2 c7c5 g1f3 g8f6 e4d5 e6d5 f1b5 c8d7 b5d7 b8d7 e1g1 f8e7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 e7e6 d2d4 d7d5 b1d2 g8f6 e4e5 f6d7 f1d3 c7c5 c2c3 b8c6 g1e2 c5d4 c3d4 f7f6 e5f6 d7f6 e1g1 f8d6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Caro-Kann&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 b8d7 g1f3 g8f6 e4f6 d7f6 f3e5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 b1c3 d7d5 d2d4 d5e4 c3e4 b8d7 f1c4 g8f6 e4g5 e7e6 d1e2 d7b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 b1c3 d7d5 d2d4 d5e4 c3e4 b8d7 e4g5 g8f6 f1d3 e7e6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 h2h4 h7h6 g1f3 g8f6-f3e5 g6h7 f1d3 b8d7 d3h7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 h2h4 h7h6 g1f3 b8d7 h4h5 g6h7 f1d3 h7d3 d1d3 g8f6 c1d2 e7e6 e1c1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 h2h4 h7h6 g1f3 b8d7 h4h5 g6h7 f1d3 h7d3 d1d3 e7e6 c1d2 g8f6 e1c1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 b1c3 d5e4 c3e4 c8f5 e4g3 f5g6 g1f3 b8d7 h2h4 h7h6 f1d3 g6d3 d1d3 e7e6 c1d2 g8f6 e1c1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 b1d2 d5e4 d2e4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 e4d5 c6d5 c2c4 g8f6 b1c3 e7e6 g1f3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 e4d5 c6d5 c2c4 g8f6 b1c3 b8c6 c1g5 e7e6 c4c5 f8e7 f1b5 e8g8 g1f3 f6e4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 d2d4 d7d5 e4e5 c8f5 f1d3 f5d3 d1d3 e7e6 b1c3 d8b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 c7c6 b1c3 d7d5 g1f3 c8g4 h2h3 g4f3 d1f3 e7e6 d2d4 g8f6 f1d3 d5e4 c3e4 d8d4 c2c3 d4d8&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Pirc and modern&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d6 e2e4 g8f6 b1c3 g7g6 f1c4 c7c6 d1e2 f8g7 g1f3 e8g8 c1g5 b7b5 c4d3 d8c7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;e2e4 d7d6 d2d4 g8f6 b1c3 g7g6 c1g5 f8g7 d1d2 b8d7 e1c1 e7e5 d4e5 d6e5 g1f3 h7h6 g5h4 g6g5 h4g3 d8e7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// QGA&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 c2c4 d5c4 g1f3 g8f6 e2e3 e7e6 f1c4 c7c5 e1g1 a7a6 d1e2 b7b5 c4d3 c5d4 e3d4 b8c6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// QGD&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 f8e7 g1f3 g8f6 c4d5 e6d5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 e7e6 d2d4 d7d5 b1c3 c7c5 c4d5 e6d5 g1f3 b8c6 g2g3 g8f6 f1g2 f8e7 e1g1 e8g8&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 e7e6 b1c3 d7d5 d2d4 g8f6 c1g5 f8e7 e2e3 e8g8 g1f3 b8d7 a1c1 c7c6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 c1g5 b8d7 c4d5 e6d5 e2e3 c7c6 f1d3 f8e7 d1c2 e8g8 g1e2 f8e8&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 c1g5 b8d7 e2e3 c7c6 g1f3 d8a5 f3d2 f8b4 d1c2 e8g8 g5h4 c6c5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 g1f3 f8e7 c4d5 e6d5 c1g5 e8g8&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Slav&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 c2c4 c7c6 b1c3 g8f6 g1f3 d5c4 a2a4 c8f5 f3e5 e7e6 f2f3 f8b4 c1g5 h7h6 g5f6 d8f6 e2e4 f5h7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 c2c4 c7c6 g1f3 g8f6 b1c3 e7e6 e2e3 b8d7 f1d3 f8d6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Catalan&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 e7e6 c2c4 d7d5 g2g3 g8f6 g1f3 f8e7 f1g2 e8g8 e1g1 f6d7 d1c2 c7c6 b1d2 b7b6 e2e4 c8b7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Nimzo-Indian&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 d1c2 c7c5 d4c5 e8g8 a2a3 b4c5 g1f3 b7b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 d1c2 e8g8 a2a3 b4c3 c2c3 b7b6 c1g5 c8b7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 g1f3 b7b6 g2g3 c8b7 f1g2&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 a2a3 b4c3 b2c3 e8g8 f2f3 d7d5 c4d5 e6d5 e2e3 c8f5 g1e2 b8d7 e2g3 f5g6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 c1d2 e8g8 e2e3 d7d5 g1f3 c7c5 a2a3 b4c3 d2c3 f6e4 a1c1 e4c3 c1c3 c5d4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 e2e3 e8g8 f1d3 d7d5 g1f3 c7c5 e1g1 b8c6 a2a3 b4c3 b2c3 d5c4 d3c4 d8c7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 d1c2 d7d5 a2a3 b4c3 c2c3 b8c6 g1f3 f6e4 c3b3 c6a5 b3a4 c7c6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Queen&#039;s Indian&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8b7 f1g2 f8e7 e1g1 e8g8 b1c3 f6e4 d1c2 e4c3 c2c3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 e2e3 c8b7 f1d3 f8e7 b1c3 d7d5 e1g1 e8g8 d1e2 b8d7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// King&#039;s Indian&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 f2f3 e8g8 c1e3 e7e5 d4d5 f6h5 d1d2 f7f5 e1c1 b8d7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 g1f3 e8g8 f1e2 e7e5 d4d5 a7a5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 g2g3 f8g7 f1g2 e8g8 b1c3 d7d6 g1f3 b8d7 e1g1 e7e5 e2e4 c7c6 h2h3 d8b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 f2f4 c7c5 g1f3 e8g8 d4d5 e7e6 f1d3 e6d5 c4d5 d8b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 g1f3 e8g8 f1e2 e7e5 e1g1 b8c6 d4d5 c6e7 f3e1 f6e8 f2f3 f7f5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 g1f3 e8g8 c1f4 d7d6 h2h3 b8d7 e2e3 c7c6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Grunfeld&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 d7d5 c1f4 f8g7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 d7d5 c4d5 f6d5 e2e4 d5c3 b2c3 c7c5 f1c4 f8g7 g1e2 e8g8 e1g1 c5d4 c3d4 b8c6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 g7g6 b1c3 d7d5 g1f3 f8g7 d1b3 d5c4 b3c4 e8g8 e2e4 c8g4 c1e3 f6d7 e1c1 b8c6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Benoni&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 g8f6 c2c4 c7c5 d4d5 e7e6 b1c3 e6d5 c4d5 d7d6 e2e4 g7g6 f1d3 f8g7 g1e2 e8g8 e1g1 a7a6 a2a4 d8c7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Dutch&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 f7f5 g2g3 e7e6 f1g2 g8f6 g1f3 f8e7 e1g1 e8g8 c2c4 d7d6 b1c3 d8e8 d1c2 e8h5 b2b3 b8c6 c1a3 a7a5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Queen&#039;s Pawn&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;d2d4 d7d5 g1f3 g8f6 c1f4 c7c5 e2e3 b8c6 c2c3 d8b6 d1c1 c8f5 d4c5 b6c5 b1d2 a8c8 f3d4 c6d4 e3d4 c5b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// English&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 e7e5 b1c3 g8f6 g1f3 b8c6 e2e4 f8b4 d2d3 d7d6 f1e2 e8g8 e1g1 b4c3 b2c3 d8e7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 e7e5 b1c3 g8f6 g1f3 b8c6 g2g3 d7d5 c4d5 f6d5 f1g2 d5b6 e1g1 f8e7 d2d3 e8g8 c1e3 f7f5&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                                                     
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 g8f6 b1c3 d7d5 c4d5 f6d5 e2e4 d5f4 f1c4 c8e6 c4e6 f7e6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 g8f6 b1c3 e7e5 g1f3 b8c6 g2g3 f8c5 f1g2 d7d6 e1g1 e8g8 d2d3 h7h6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 g8f6 b1c3 e7e5 g1f3 b8c6 g2g3 f8b4 f1g2 e8g8 e1g1 e5e4 f3e1 b4c3 d2c3 h7h6 e1c2 b7b6&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;c2c4 c7c5 g1f3 b8c6 b1c3 g8f6 g2g3 g7g6 f1g2 f8g7 e1g1 e8g8 d2d4 c5d4 f3d4 c6d4 d1d4 d7d6 d4d3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Reti&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;g1f3 d7d5 g2g3 g8f6 f1g2 g7g6 e1g1 f8g7 d2d3 e8g8 b1d2 b8c6 e2e4 e7e5 c2c3 a7a5 f1e1 d5e4 d3e4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;g1f3 d7d5 c2c4 e7e6 g2g3 g8f6 f1g2 f8e7 e1g1 e8g8 b2b3 c7c5 c4d5 f6d5 c1b2 b8c6 d2d4 b7b6 b1c3 d5c3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;g1f3 d7d5 c2c4 d5c4 e2e3 c7c5 f1c4 e7e6 e1g1 g8f6 b2b3 b8c6 c1b2 a7a6 a2a4 f8e7&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_book&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_book&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_book includeBody-CPW-Engine_book includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_book&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_book&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 8, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_book_h&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_book_h&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 27, 2008&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Opening+Book&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Opening Book&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 26, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pseudorandom+number+generator&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pseudorandom number generator&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_book_h</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_book_h</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_book_h</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_book_h</comments>
      <pubDate>Sat, 27 Sep 2008 14:05:15 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Book.h&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This is the header file for &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_book&quot;&gt;CPW-Engine_book&lt;/a&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;void readBookFile();&amp;lt;br/&amp;gt;void book_addline( int line_no, char * movestring);&amp;lt;br/&amp;gt;int book_add( char * movestring);&amp;lt;br/&amp;gt;int book_present( char * movestring );&amp;lt;br/&amp;gt;int book_getMaxFreq();&amp;lt;br/&amp;gt;void book_loadInternal();&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; readBookFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; book_addline&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; line_no, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_add&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; movestring&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_present&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; movestring &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; book_getMaxFreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; book_loadInternal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_chronos</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_chronos</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_chronos</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_chronos</comments>
      <pubDate>Tue, 30 Dec 2014 18:38:57 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Chronos&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;enum etask {&amp;lt;br/&amp;gt;    TASK_NOTHING,&amp;lt;br/&amp;gt;    TASK_SEARCH,&amp;lt;br/&amp;gt;    TASK_PONDER&amp;lt;br/&amp;gt;} extern task;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;stime chronos;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;extern sSearchDriver sd;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;extern bool time_over;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;#define TIMEBUFFER 500&amp;lt;br/&amp;gt;#define MOVESTOGO 24&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;#if defined(_MSC_VER) || defined(_WINDOWS_)&amp;lt;br/&amp;gt;    #include &amp;amp;lt;Windows.h&amp;amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    unsigned int gettime() {&amp;lt;br/&amp;gt;        FILETIME ft;&amp;lt;br/&amp;gt;        GetSystemTimeAsFileTime(&amp;amp;amp;ft);    &amp;lt;br/&amp;gt;        return (unsigned int) ((((U64)ft.dwHighDateTime &amp;amp;lt;&amp;amp;lt; 32) | ft.dwLowDateTime) / 10000);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;#else&amp;lt;br/&amp;gt;    #include &amp;amp;lt;sys/time.h&amp;amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    unsigned int gettime() {&amp;lt;br/&amp;gt;        timeval t;&amp;lt;br/&amp;gt;        gettimeofday(&amp;amp;amp;t, 0);&amp;lt;br/&amp;gt;        return t.tv_usec;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;#endif&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void time_uci_go(char * command) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    time_over = false;&amp;lt;br/&amp;gt;    task = TASK_SEARCH;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    chronos.flags = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;infinite&amp;amp;quot;)) {chronos.flags |= FINFINITE;}&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;ponder&amp;amp;quot;)) {chronos.flags |= FINFINITE; task = TASK_PONDER;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    //not implemented (do an infinite search instead)&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;searchmoves&amp;amp;quot;)) {chronos.flags |= FINFINITE;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;wtime&amp;amp;quot;)) {chronos.flags |= FTIME; sscanf(strstr(command, &amp;amp;quot;wtime&amp;amp;quot;), &amp;amp;quot;wtime %d&amp;amp;quot;, &amp;amp;amp;chronos.time[WHITE]);}&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;btime&amp;amp;quot;)) {chronos.flags |= FTIME; sscanf(strstr(command, &amp;amp;quot;btime&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.time[BLACK]);}&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;winc&amp;amp;quot;)) {chronos.flags |= FINC; sscanf(strstr(command, &amp;amp;quot;winc&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.inc[WHITE]);}&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;binc&amp;amp;quot;)) {chronos.flags |= FINC; sscanf(strstr(command, &amp;amp;quot;binc&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.inc[BLACK]);}&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;movestogo&amp;amp;quot;)) {chronos.flags |= FMOVESTOGO; sscanf(strstr(command, &amp;amp;quot;movestogo&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.movestogo);}&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;depth&amp;amp;quot;)) {chronos.flags |= FDEPTH; sscanf(strstr(command, &amp;amp;quot;depth&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.depth);}&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;nodes&amp;amp;quot;)) {chronos.flags |= FNODES; sscanf(strstr(command, &amp;amp;quot;nodes&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.nodes);}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    //not implemented (do an infinite search instead)&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;mate&amp;amp;quot;)) {chronos.flags |= FMATE; chronos.flags |= FINFINITE; sscanf(strstr(command, &amp;amp;quot;mate&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.mate);}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (strstr(command, &amp;amp;quot;movetime&amp;amp;quot;)) {chronos.flags |= FMOVETIME; sscanf(strstr(command, &amp;amp;quot;movetime&amp;amp;quot;), &amp;amp;quot;%*s %d&amp;amp;quot;, &amp;amp;amp;chronos.movetime);}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (chronos.flags == 0) chronos.flags |= FINFINITE;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int time_uci_ponderhit() {&amp;lt;br/&amp;gt;    if (task != TASK_PONDER) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* switch from pondering mode to normal search */&amp;lt;br/&amp;gt;    chronos.flags &amp;amp;amp;= ~FINFINITE;&amp;lt;br/&amp;gt;    sd.starttime = gettime();&amp;lt;br/&amp;gt;    task = TASK_SEARCH;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void time_xboard_go() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    time_over = false;&amp;lt;br/&amp;gt;    task = TASK_SEARCH;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (!chronos.flags) chronos.flags = FINFINITE;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void time_nothing_go() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    time_over = false;&amp;lt;br/&amp;gt;    task = TASK_SEARCH;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void time_calc_movetime() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* no movetime to be calculated in these search types */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (chronos.flags &amp;amp;amp; (FINFINITE | FDEPTH | FNODES)) return;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* if the movetime is given */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (chronos.flags &amp;amp;amp; FMOVETIME) {&amp;lt;br/&amp;gt;        if (chronos.movetime &amp;amp;gt; TIMEBUFFER) {&amp;lt;br/&amp;gt;            sd.movetime = chronos.movetime - TIMEBUFFER;&amp;lt;br/&amp;gt;        } else {&amp;lt;br/&amp;gt;            sd.movetime = -1;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        return;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* in any other case we are given an ordinary timecontrol &amp;lt;br/&amp;gt;       (time + opt. movestogo + opt. incremental) &amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;        we take the total time left (chronos.time[sd.myside]), divide it&amp;lt;br/&amp;gt;        by the number of moves that are still to play (chronos.movestogo)&amp;lt;br/&amp;gt;        and we have the allowed time per move.&amp;lt;br/&amp;gt;        If we are given an incremental time control, we consider this &amp;lt;br/&amp;gt;        here as well.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        In case we are not told how many moves we are supposed to play&amp;lt;br/&amp;gt;        with the time left, we assume a constant. This results in a &amp;lt;br/&amp;gt;        slower play in the beginning and more rapid towards the end.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        as a little buffer we always assume that there are more moves&amp;lt;br/&amp;gt;        to be played than we actually have to. This should avoid loosing on time.&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    sd.movetime = 0;&amp;lt;br/&amp;gt;    int movestogo = MOVESTOGO;&amp;lt;br/&amp;gt;    if (chronos.flags &amp;amp;amp; FMOVESTOGO) movestogo = chronos.movestogo + 2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( chronos.time[sd.myside] &amp;amp;lt; 0 ) chronos.time[sd.myside] = 0;&amp;lt;br/&amp;gt;    if ( chronos.inc[sd.myside]  &amp;amp;lt; 0 ) chronos.inc[sd.myside]  = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( chronos.flags &amp;amp;amp; FTIME) sd.movetime += chronos.time[sd.myside] / movestogo;&amp;lt;br/&amp;gt;    if ( chronos.flags &amp;amp;amp; FINC ) sd.movetime += chronos.inc[sd.myside];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (sd.movetime &amp;amp;gt; TIMEBUFFER) &amp;lt;br/&amp;gt;        sd.movetime -= TIMEBUFFER;&amp;lt;br/&amp;gt;    else&amp;lt;br/&amp;gt;        sd.movetime = -1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;bool time_stop_root() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (time_over) return 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* in the root function we check at the beginning of every iteration, &amp;lt;br/&amp;gt;       whether we should start calculating another cycle.&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* first check for any new commands (e.g. the stop command, &amp;lt;br/&amp;gt;        which would set task to TASK_NOTHING)&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    com();&amp;lt;br/&amp;gt;    if (task == TASK_NOTHING) return 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* in case we are supposed to search to a certain depth, nodes count, &amp;lt;br/&amp;gt;        fixed time or infinite, check whether we have finished the task.&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( chronos.flags &amp;amp;amp; FINFINITE ) return 0;&amp;lt;br/&amp;gt;    if ( chronos.flags &amp;amp;amp; FDEPTH    ) return (sd.depth &amp;amp;gt; chronos.depth);&amp;lt;br/&amp;gt;    if ( chronos.flags &amp;amp;amp; FNODES    ) return (sd.nodes &amp;amp;gt; chronos.nodes);&amp;lt;br/&amp;gt;    if ( chronos.flags &amp;amp;amp; FMOVETIME ) return ((int)(gettime() - sd.starttime) &amp;amp;gt; sd.movetime);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* none of the other types of search-duration controls were triggered.&amp;lt;br/&amp;gt;        This means we are given an ordinary timecontrol.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        Now we ask the question, whether it is worth to search another &amp;lt;br/&amp;gt;        ply, risk running out of time and having to abort  the search&amp;lt;br/&amp;gt;        or if we should just stop the search now and save the time for&amp;lt;br/&amp;gt;        another move.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        based on some tests in average positions (where the hash isn&#039;t full yet,&amp;lt;br/&amp;gt;        there are not too many captures - resulting in a longer quiescence search)&amp;lt;br/&amp;gt;        the time for searching a ply is about the duration of the search&amp;lt;br/&amp;gt;        of the previous plies.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        So:&amp;lt;br/&amp;gt;        timeused = (gettime() - sd.starttime);&amp;lt;br/&amp;gt;        predictedtime = timeused;&amp;lt;br/&amp;gt;        timeleft = movetime - timeused;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (predictedtime &amp;amp;gt; timeleft) we stop the search now&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        Simplifying the equations:&amp;lt;br/&amp;gt;        (predictedtime &amp;amp;gt; timeleft)&amp;lt;br/&amp;gt;        ( timeused &amp;amp;gt; (movetime - timeused) )&amp;lt;br/&amp;gt;        ( (timeused * 2) &amp;amp;gt; movetime )&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return (((int)(gettime() - sd.starttime) * 2) &amp;amp;gt; sd.movetime);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;bool time_stop() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* time_stop() function is similar to time_stop_root(), only that&amp;lt;br/&amp;gt;        this function is not called every time we reach another ply,&amp;lt;br/&amp;gt;        but every couple thousand nodes. This function is very time&amp;lt;br/&amp;gt;        consuming, so calling it too often will slow down the search.&amp;lt;br/&amp;gt;        Calling it to seldom results in a slower response to input &amp;lt;br/&amp;gt;        through the console and it might overlook the running out of &amp;lt;br/&amp;gt;        time in faster games.&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (sd.depth &amp;amp;lt;= 1) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* the first few lines are the same as in time_stop_root().&amp;lt;br/&amp;gt;        for more comments see that function&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    com();&amp;lt;br/&amp;gt;    if (task == TASK_NOTHING) return 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (chronos.flags &amp;amp;amp; FINFINITE) return 0;&amp;lt;br/&amp;gt;    if (chronos.flags &amp;amp;amp; FDEPTH   ) return (sd.depth &amp;amp;gt; chronos.depth);&amp;lt;br/&amp;gt;    if (chronos.flags &amp;amp;amp; FNODES   ) return (sd.nodes &amp;amp;gt; chronos.nodes);&amp;lt;br/&amp;gt;    if (chronos.flags &amp;amp;amp; FMOVETIME) return ((int)(gettime() - sd.starttime) &amp;amp;gt; chronos.movetime );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* again we are not doing one of the easier to manage time controls&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;        other than the function before we are now already in the middle of&amp;lt;br/&amp;gt;        a search. Actually if our prediction was right, we wouldn&#039;t have &amp;lt;br/&amp;gt;        entered this ply if we weren&#039;t able to finish it.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        so ( (gettime() - sd.starttime) &amp;amp;lt; movetime ) should always be given.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        Anyway there are some situations where our prediction method fails.&amp;lt;br/&amp;gt;        The problem is that should we return true here and stop the search&amp;lt;br/&amp;gt;        a lot of information gathered gets useless, as the different lines&amp;lt;br/&amp;gt;        searched are not verfied.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if possible give in such cases a little overdraft and hope that&amp;lt;br/&amp;gt;        the misprediction was only small&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ((int)(gettime() - sd.starttime) &amp;amp;gt; sd.movetime) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        int movestogo = MOVESTOGO;&amp;lt;br/&amp;gt;        if ( chronos.flags &amp;amp;amp; FMOVESTOGO ) movestogo = chronos.movestogo;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( ( movestogo &amp;amp;gt; 5 ) &amp;amp;amp;&amp;amp;amp; &amp;lt;br/&amp;gt;             ( (int)(gettime() - sd.starttime) &amp;amp;lt; (sd.movetime * 2) ) &amp;amp;amp;&amp;amp;amp; &amp;lt;br/&amp;gt;             ( sd.movetime &amp;amp;gt; 5000) ) {&amp;lt;br/&amp;gt;            return 0;&amp;lt;br/&amp;gt;        } else {&amp;lt;br/&amp;gt;            return 1;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; etask &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    TASK_NOTHING,
    TASK_SEARCH,
    TASK_PONDER
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; task&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
stime chronos&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; sSearchDriver sd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; time_over&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#define TIMEBUFFER 500&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define MOVESTOGO 24&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#if defined(_MSC_VER) || defined(_WINDOWS_)&lt;/span&gt;
    &lt;span class=&quot;co2&quot;&gt;#include &amp;lt;Windows.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        FILETIME ft&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        GetSystemTimeAsFileTime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;ft&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;    
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;ft.&lt;span class=&quot;me1&quot;&gt;dwHighDateTime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; ft.&lt;span class=&quot;me1&quot;&gt;dwLowDateTime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#else&lt;/span&gt;
    &lt;span class=&quot;co2&quot;&gt;#include &amp;lt;sys/time.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        timeval t&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        gettimeofday&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;t, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; t.&lt;span class=&quot;me1&quot;&gt;tv_usec&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; time_uci_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_SEARCH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;infinite&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINFINITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ponder&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINFINITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_PONDER&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//not implemented (do an infinite search instead)&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;searchmoves&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINFINITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;wtime&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FTIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;wtime&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;wtime %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;btime&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FTIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;btime&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;winc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINC&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;winc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;inc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;binc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINC&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;binc&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;inc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;movestogo&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FMOVESTOGO&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;movestogo&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;movestogo&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;depth&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FDEPTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;depth&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;nodes&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FNODES&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;nodes&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//not implemented (do an infinite search instead)&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;mate&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FMATE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINFINITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;mate&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;mate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;movetime&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FMOVETIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;movetime&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%*s %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINFINITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; time_uci_ponderhit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;task &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_PONDER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* switch from pondering mode to normal search */&lt;/span&gt;
    chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~FINFINITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_SEARCH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; time_xboard_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_SEARCH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FINFINITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; time_nothing_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_SEARCH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; time_calc_movetime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* no movetime to be calculated in these search types */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;FINFINITE &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; FDEPTH &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; FNODES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* if the movetime is given */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FMOVETIME&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; TIMEBUFFER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; TIMEBUFFER&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* in any other case we are given an ordinary timecontrol 
       (time + opt. movestogo + opt. incremental) 
&amp;nbsp;
        we take the total time left (chronos.time[sd.myside]), divide it
        by the number of moves that are still to play (chronos.movestogo)
        and we have the allowed time per move.
        If we are given an incremental time control, we consider this 
        here as well.
&amp;nbsp;
        In case we are not told how many moves we are supposed to play
        with the time left, we assume a constant. This results in a 
        slower play in the beginning and more rapid towards the end.
&amp;nbsp;
        as a little buffer we always assume that there are more moves
        to be played than we actually have to. This should avoid loosing on time.
    */&lt;/span&gt;
&amp;nbsp;
    sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; movestogo &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; MOVESTOGO&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FMOVESTOGO&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; movestogo &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;movestogo&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; chronos.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;inc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;inc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FTIME&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; chronos.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; movestogo&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FINC &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;inc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; TIMEBUFFER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TIMEBUFFER&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
        sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; time_stop_root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;time_over&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* in the root function we check at the beginning of every iteration, 
       whether we should start calculating another cycle.
    */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* first check for any new commands (e.g. the stop command, 
        which would set task to TASK_NOTHING)
    */&lt;/span&gt;
    com&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;task &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* in case we are supposed to search to a certain depth, nodes count, 
        fixed time or infinite, check whether we have finished the task.
    */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FINFINITE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FDEPTH    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FNODES    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FMOVETIME &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* none of the other types of search-duration controls were triggered.
        This means we are given an ordinary timecontrol.
&amp;nbsp;
        Now we ask the question, whether it is worth to search another 
        ply, risk running out of time and having to abort  the search
        or if we should just stop the search now and save the time for
        another move.
&amp;nbsp;
        based on some tests in average positions (where the hash isn&#039;t full yet,
        there are not too many captures - resulting in a longer quiescence search)
        the time for searching a ply is about the duration of the search
        of the previous plies.
&amp;nbsp;
        So:
        timeused = (gettime() - sd.starttime);
        predictedtime = timeused;
        timeleft = movetime - timeused;
&amp;nbsp;
        if (predictedtime &amp;gt; timeleft) we stop the search now
&amp;nbsp;
&amp;nbsp;
        Simplifying the equations:
        (predictedtime &amp;gt; timeleft)
        ( timeused &amp;gt; (movetime - timeused) )
        ( (timeused * 2) &amp;gt; movetime )
&amp;nbsp;
    */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; time_stop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* time_stop() function is similar to time_stop_root(), only that
        this function is not called every time we reach another ply,
        but every couple thousand nodes. This function is very time
        consuming, so calling it too often will slow down the search.
        Calling it to seldom results in a slower response to input 
        through the console and it might overlook the running out of 
        time in faster games.
    */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* the first few lines are the same as in time_stop_root().
        for more comments see that function
    */&lt;/span&gt;
&amp;nbsp;
    com&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;task &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FINFINITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FDEPTH   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FNODES   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FMOVETIME&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* again we are not doing one of the easier to manage time controls
&amp;nbsp;
        other than the function before we are now already in the middle of
        a search. Actually if our prediction was right, we wouldn&#039;t have 
        entered this ply if we weren&#039;t able to finish it.
&amp;nbsp;
        so ( (gettime() - sd.starttime) &amp;lt; movetime ) should always be given.
&amp;nbsp;
        Anyway there are some situations where our prediction method fails.
        The problem is that should we return true here and stop the search
        a lot of information gathered gets useless, as the different lines
        searched are not verfied.
&amp;nbsp;
        if possible give in such cases a little overdraft and hope that
        the misprediction was only small
    */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; movestogo &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; MOVESTOGO&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; FMOVESTOGO &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; movestogo &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;movestogo&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movestogo &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
             &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
             &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_chronos&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_chronos&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_chronos includeBody-CPW-Engine_chronos includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_chronos&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_chronos&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Time+Management&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Time Management&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 20, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_com</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_com</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_com</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_com</comments>
      <pubDate>Tue, 30 Dec 2014 18:50:20 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:8:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:8 --&gt;&lt;!-- ws:start:WikiTextTocRule:9: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Description&quot;&gt;Description&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:9 --&gt;&lt;!-- ws:start:WikiTextTocRule:10: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Code&quot;&gt;Code&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:10 --&gt;&lt;!-- ws:start:WikiTextTocRule:11: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:11 --&gt;&lt;!-- ws:start:WikiTextTocRule:12: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:12 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * com&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Description&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;Description&lt;/h1&gt;
 This part of the engine deals with the communication with the &lt;a class=&quot;wiki_link&quot; href=&quot;/GUI&quot;&gt;GUI&lt;/a&gt;. The supported GUI formats are &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20Engine%20Communication%20Protocol&quot;&gt;Xboard&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/UCI&quot;&gt;UCI&lt;/a&gt; Protocol.&lt;br /&gt;
&lt;br /&gt;
In the initialization process, if the engine is started through a program using one of these protocols, they identify themselves with &amp;quot;xboard&amp;quot; and &amp;quot;uci&amp;quot; respectively. In the com() function the variable mode is then set to store the protocol we communicate with.&lt;br /&gt;
&lt;br /&gt;
com() is always called when the engine wants to check whether there is any new user input. gets(command) copies the input into command and returns true in case there has been a message.&lt;br /&gt;
&lt;br /&gt;
The next step is that the commands get executed. This is now either done in com_xboard() or com_uci() depending on the GUI we are communicating with. Should we be running the engine without any GUI (e.g. through the command window for debugging), that means mode is set to 0, some basic commands get executed in the com() function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Code&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;Code&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;transposition.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;#include &amp;amp;lt;windows.h&amp;amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;enum etask {&amp;lt;br/&amp;gt;    TASK_NOTHING,&amp;lt;br/&amp;gt;    TASK_SEARCH,&amp;lt;br/&amp;gt;    TASK_PONDER&amp;lt;br/&amp;gt;} task = TASK_NOTHING;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;enum eproto {&amp;lt;br/&amp;gt;    PROTO_NOTHING,&amp;lt;br/&amp;gt;    PROTO_XBOARD,&amp;lt;br/&amp;gt;    PROTO_UCI&amp;lt;br/&amp;gt;} mode = PROTO_NOTHING;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int debug = 0;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;int pipe;&amp;lt;br/&amp;gt;HANDLE hstdin;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com_init() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    unsigned long dw;&amp;lt;br/&amp;gt;    hstdin = GetStdHandle(STD_INPUT_HANDLE);&amp;lt;br/&amp;gt;    pipe = !GetConsoleMode(hstdin, &amp;amp;amp;dw);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (!pipe) {&amp;lt;br/&amp;gt;        SetConsoleMode(hstdin,dw&amp;amp;amp;~(ENABLE_MOUSE_INPUT|ENABLE_WINDOW_INPUT));&amp;lt;br/&amp;gt;        FlushConsoleInputBuffer(hstdin);&amp;lt;br/&amp;gt;    } else {&amp;lt;br/&amp;gt;        setvbuf(stdin,NULL,_IONBF,0);&amp;lt;br/&amp;gt;        setvbuf(stdout,NULL,_IONBF,0);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    /* default search settings */&amp;lt;br/&amp;gt;    chronos.movetime = 5000;    &amp;lt;br/&amp;gt;    chronos.flags = FMOVETIME;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    printWelcome();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int input() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    unsigned long dw=0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (task == TASK_NOTHING) return 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (stdin-&amp;amp;gt;_cnt &amp;amp;gt; 0) return 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (pipe) {&amp;lt;br/&amp;gt;        if (!PeekNamedPipe(hstdin, 0, 0, 0, &amp;amp;amp;dw, 0)) return 1;&amp;lt;br/&amp;gt;        return dw;&amp;lt;br/&amp;gt;    } else {&amp;lt;br/&amp;gt;        GetNumberOfConsoleInputEvents(hstdin, &amp;amp;amp;dw);&amp;lt;br/&amp;gt;        if (dw &amp;amp;gt; 1) task = TASK_NOTHING;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com() {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    char command[65536];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (!input()) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* unwind the search-stack first */&amp;lt;br/&amp;gt;    if (task == TASK_SEARCH) {&amp;lt;br/&amp;gt;        task = TASK_NOTHING;&amp;lt;br/&amp;gt;        return 0;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    gets(command);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    switch (mode) {&amp;lt;br/&amp;gt;    case PROTO_XBOARD :    com_xboard(command);  break;&amp;lt;br/&amp;gt;    case PROTO_UCI    :    com_uci(command);     break;&amp;lt;br/&amp;gt;    case PROTO_NOTHING: com_nothing(command); break;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com_nothing(char * command) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;xboard&amp;amp;quot;))                com_xboard(command);&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;uci&amp;amp;quot;))        com_uci(command);&amp;lt;br/&amp;gt;        else if (!strncmp(command,&amp;amp;quot;perft&amp;amp;quot;, 5))    perft_start(command);&amp;lt;br/&amp;gt;        else if (!strncmp(command,&amp;amp;quot;bench&amp;amp;quot;, 5))    util_bench(command);&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;eval&amp;amp;quot;))      printEval();&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;stat&amp;amp;quot;))      printStats();&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;d&amp;amp;quot;))            board_display();&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;new&amp;amp;quot;))        board_loadFromFen(STARTFEN);&amp;lt;br/&amp;gt;        else if (!strncmp(command, &amp;amp;quot;pos&amp;amp;quot;, 3))    board_loadFromFen(command+4);&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;go&amp;amp;quot;))        time_nothing_go();&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;quit&amp;amp;quot;))        exit(0);&amp;lt;br/&amp;gt;        else if (!strcmp(command, &amp;amp;quot;help&amp;amp;quot;))        printHelp();&amp;lt;br/&amp;gt;        else if (com_ismove(command) ) {&amp;lt;br/&amp;gt;                if ( algebraic_moves(command) ) &amp;lt;br/&amp;gt;                   time_nothing_go();&amp;lt;br/&amp;gt;                else&amp;lt;br/&amp;gt;                    printf(&amp;amp;quot;Sorry, this is not a legal move\n&amp;amp;quot;);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;                else if (!strncmp(command, &amp;amp;quot;st&amp;amp;quot;, 2)) {&amp;lt;br/&amp;gt;        sscanf(command, &amp;amp;quot;st %d&amp;amp;quot;, &amp;amp;amp;chronos.movetime);&amp;lt;br/&amp;gt;        chronos.movetime *= 1000;&amp;lt;br/&amp;gt;        chronos.flags = FMOVETIME;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        else if (!strncmp(command, &amp;amp;quot;sd&amp;amp;quot;, 2)) {&amp;lt;br/&amp;gt;        sscanf(command, &amp;amp;quot;sd %d&amp;amp;quot;, &amp;amp;amp;chronos.depth);&amp;lt;br/&amp;gt;        chronos.flags = FDEPTH;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        else if (command[0] == &#039;\n&#039;)            {}&amp;lt;br/&amp;gt;        else {&amp;lt;br/&amp;gt;            strcat(command, &amp;amp;quot; - UNKNOWN COMMAND (type &#039;help&#039; for a list of commands)&amp;amp;quot;);&amp;lt;br/&amp;gt;            com_send(command);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com_xboard(char * command) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;xboard&amp;amp;quot;))&amp;lt;br/&amp;gt;        mode = PROTO_XBOARD;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;new&amp;amp;quot;))&amp;lt;br/&amp;gt;        board_loadFromFen(STARTFEN);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;force&amp;amp;quot;))&amp;lt;br/&amp;gt;        task = TASK_NOTHING;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;white&amp;amp;quot;))&amp;lt;br/&amp;gt;        sd.myside = WHITE;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;black&amp;amp;quot;))&amp;lt;br/&amp;gt;        sd.myside = BLACK;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strncmp(command, &amp;amp;quot;st&amp;amp;quot;, 2)) {&amp;lt;br/&amp;gt;        sscanf(command, &amp;amp;quot;st %d&amp;amp;quot;, &amp;amp;amp;chronos.movetime);&amp;lt;br/&amp;gt;        chronos.movetime *= 1000;&amp;lt;br/&amp;gt;        chronos.flags = FMOVETIME;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strncmp(command, &amp;amp;quot;sd&amp;amp;quot;, 2)) {&amp;lt;br/&amp;gt;        sscanf(command, &amp;amp;quot;sd %d&amp;amp;quot;, &amp;amp;amp;chronos.depth);&amp;lt;br/&amp;gt;        chronos.flags = FDEPTH;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strncmp(command, &amp;amp;quot;time&amp;amp;quot;, 4)) {&amp;lt;br/&amp;gt;        sscanf(command, &amp;amp;quot;time %d&amp;amp;quot;, &amp;amp;amp;chronos.time[sd.myside]);&amp;lt;br/&amp;gt;        chronos.flags = FTIME;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strncmp(command, &amp;amp;quot;otim&amp;amp;quot;, 4)) {&amp;lt;br/&amp;gt;        sscanf(command, &amp;amp;quot;otim %d&amp;amp;quot;, &amp;amp;amp;chronos.time[!sd.myside]);&amp;lt;br/&amp;gt;        chronos.flags = FTIME;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;go&amp;amp;quot;))&amp;lt;br/&amp;gt;        time_xboard_go();&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;hint&amp;amp;quot;)) {&amp;lt;br/&amp;gt;        // hint&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;undo&amp;amp;quot;)) {&amp;lt;br/&amp;gt;        // undo&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;remove&amp;amp;quot;)) {&amp;lt;br/&amp;gt;        // remove&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;post&amp;amp;quot;)) {&amp;lt;br/&amp;gt;        // post&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;nopost&amp;amp;quot;)) {&amp;lt;br/&amp;gt;        // nopost&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    else if (!strcmp(command, &amp;amp;quot;quit&amp;amp;quot;)) {&amp;lt;br/&amp;gt;        exit(0);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    else if (com_ismove(command)) {&amp;lt;br/&amp;gt;        algebraic_moves(command);&amp;lt;br/&amp;gt;        time_xboard_go();&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com_uci(char * command) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;uci&amp;amp;quot;)) {&amp;lt;br/&amp;gt;        mode = PROTO_UCI;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        com_send(&amp;amp;quot;id name CPW-Engine 1.1&amp;amp;quot;);&amp;lt;br/&amp;gt;        com_send(&amp;amp;quot;id author Computer Chess Wiki&amp;amp;quot;);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        printf(&amp;amp;quot;option name Hash type spin default 64 min 1 max 1024\n&amp;amp;quot;);&amp;lt;br/&amp;gt;        // send options&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        com_send(&amp;amp;quot;uciok&amp;amp;quot;);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;isready&amp;amp;quot;)) &amp;lt;br/&amp;gt;        com_send(&amp;amp;quot;readyok&amp;amp;quot;);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strncmp(command, &amp;amp;quot;setoption&amp;amp;quot;, 9)) {&amp;lt;br/&amp;gt;        char name[256];&amp;lt;br/&amp;gt;        char value[256];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        sscanf(command, &amp;amp;quot;setoption name %s value %s&amp;amp;quot;, &amp;amp;amp;name, &amp;amp;amp;value);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (!strcmp(name, &amp;amp;quot;Hash&amp;amp;quot;)) {&amp;lt;br/&amp;gt;            int val;&amp;lt;br/&amp;gt;            sscanf(value, &amp;amp;quot;%d&amp;amp;quot;, &amp;amp;amp;val);&amp;lt;br/&amp;gt;            tt_setsize(val&amp;amp;lt;&amp;amp;lt;20);&amp;lt;br/&amp;gt;            ttpawn_setsize(val&amp;amp;lt;&amp;amp;lt;18);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;ucinewgame&amp;amp;quot;)) {}&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strncmp(command, &amp;amp;quot;position&amp;amp;quot;, 8)) {&amp;lt;br/&amp;gt;        //position [fen | startpos] [moves ...]&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        if (!strncmp(command,&amp;amp;quot;position fen&amp;amp;quot;,12)) {&amp;lt;br/&amp;gt;            board_loadFromFen(command + 13);&amp;lt;br/&amp;gt;        } else {&amp;lt;br/&amp;gt;            board_loadFromFen(&amp;amp;quot;rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1&amp;amp;quot;);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        char * moves = strstr(command, &amp;amp;quot;moves&amp;amp;quot;);&amp;lt;br/&amp;gt;        if (moves) algebraic_moves(moves+6);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strncmp(command, &amp;amp;quot;go&amp;amp;quot;, 2)) &amp;lt;br/&amp;gt;        time_uci_go(command);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strncmp(command, &amp;amp;quot;debug&amp;amp;quot;, 5)) &amp;lt;br/&amp;gt;        debug = strcmp(command,&amp;amp;quot;debug off&amp;amp;quot;);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;ponderhit&amp;amp;quot;))&amp;lt;br/&amp;gt;        time_uci_ponderhit();&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;stop&amp;amp;quot;))&amp;lt;br/&amp;gt;        task = TASK_NOTHING;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!strcmp(command, &amp;amp;quot;quit&amp;amp;quot;))&amp;lt;br/&amp;gt;        exit(0);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com_send(char * command) {&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;%s\n&amp;amp;quot;,command);&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com_sendmove(smove m) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    int promotion = 0;&amp;lt;br/&amp;gt;    char parray[5] = {0,&#039;q&#039;,&#039;r&#039;,&#039;b&#039;,&#039;n&#039;};&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    char command[20];&amp;lt;br/&amp;gt;    char move[6];&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    switch (mode) {&amp;lt;br/&amp;gt;    case PROTO_XBOARD: strcpy(command,&amp;amp;quot;move &amp;amp;quot;); break;&amp;lt;br/&amp;gt;    case PROTO_UCI:    strcpy(command,&amp;amp;quot;bestmove &amp;amp;quot;); break;&amp;lt;br/&amp;gt;    default: strcpy(command,&amp;amp;quot;CPW: &amp;amp;quot;);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    convert_0x88_a(m.from, move);&amp;lt;br/&amp;gt;    convert_0x88_a(m.to, move+2);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    //Promotion piece&amp;lt;br/&amp;gt;    if (m.piece_to != m.piece_from) {&amp;lt;br/&amp;gt;        promotion = m.piece_to;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    move[4] = parray[promotion];&amp;lt;br/&amp;gt;    move[5] = 0;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    strcat(command, move);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    com_send(command);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* in xboard and nothing actually do the move on the board */&amp;lt;br/&amp;gt;    if (mode == PROTO_XBOARD || mode == PROTO_NOTHING)&amp;lt;br/&amp;gt;        move_make(m);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int com_ismove(char * command) {&amp;lt;br/&amp;gt;    return (command[0] &amp;amp;gt;= &#039;a&#039; &amp;amp;amp;&amp;amp;amp; command[0] &amp;amp;lt;= &#039;h&#039; &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;            command[1] &amp;amp;gt;= &#039;1&#039; &amp;amp;amp;&amp;amp;amp; command[1] &amp;amp;lt;= &#039;8&#039; &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;            command[2] &amp;amp;gt;= &#039;a&#039; &amp;amp;amp;&amp;amp;amp; command[2] &amp;amp;lt;= &#039;h&#039; &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;            command[3] &amp;amp;gt;= &#039;1&#039; &amp;amp;amp;&amp;amp;amp; command[3] &amp;amp;lt;= &#039;8&#039; &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;            ( command[4] == &#039; &#039; || command[4] == &#039;\n&#039; || command[4] == 0 || &amp;lt;br/&amp;gt;              command[4] == &#039;-&#039; || &amp;lt;br/&amp;gt;              command[4] == &#039;q&#039; || command[4] == &#039;r&#039; || command[4] == &#039;b&#039; || command[4] == &#039;n&#039;));&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; /*************************************************************** &amp;lt;br/&amp;gt; *  command[4] might be:                                        *&amp;lt;br/&amp;gt; *                                                              *&amp;lt;br/&amp;gt; *  (a) any kind of a blank space                               *&amp;lt;br/&amp;gt; *    (b) &#039;-&#039; or any other mark used in opening book processing   *&amp;lt;br/&amp;gt; *    (c) first letter of a name of a promoted piece              *&amp;lt;br/&amp;gt; ***************************************************************/&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;transposition.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;windows.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; etask &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    TASK_NOTHING,
    TASK_SEARCH,
    TASK_PONDER
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; eproto &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    PROTO_NOTHING,
    PROTO_XBOARD,
    PROTO_UCI
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; mode &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PROTO_NOTHING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; debug &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; pipe&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
HANDLE hstdin&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com_init&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; dw&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    hstdin &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; GetStdHandle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;STD_INPUT_HANDLE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    pipe &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;GetConsoleMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hstdin, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;dw&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;pipe&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        SetConsoleMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hstdin,dw&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ENABLE_MOUSE_INPUT&lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;ENABLE_WINDOW_INPUT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        FlushConsoleInputBuffer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hstdin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;setvbuf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;stdin&lt;/span&gt;,&lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;,_IONBF,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;setvbuf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;stdout&lt;/span&gt;,&lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;,_IONBF,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* default search settings */&lt;/span&gt;
    chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5000&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;    
    chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FMOVETIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    printWelcome&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; input&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; dw&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;task &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stdin&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;_cnt &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pipe&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;PeekNamedPipe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hstdin, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;dw, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; dw&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        GetNumberOfConsoleInputEvents&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hstdin, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;dw&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dw &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;65536&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;input&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* unwind the search-stack first */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;task &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; TASK_SEARCH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PROTO_XBOARD &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;    com_xboard&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PROTO_UCI    &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;    com_uci&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PROTO_NOTHING&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; com_nothing&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com_nothing&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;xboard&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;                com_xboard&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;uci&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;        com_uci&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command,&lt;span class=&quot;st0&quot;&gt;&amp;quot;perft&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    perft_start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command,&lt;span class=&quot;st0&quot;&gt;&amp;quot;bench&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    util_bench&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;eval&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;      printEval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;stat&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;      printStats&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;d&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;            board_display&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;new&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;        board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;STARTFEN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;pos&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;go&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;        time_nothing_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;        &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;help&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;        printHelp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;com_ismove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; algebraic_moves&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
                   time_nothing_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
                    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Sorry, this is not a legal move&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;st&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;st %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FMOVETIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;sd&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;sd %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FDEPTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;strcat&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot; - UNKNOWN COMMAND (type &#039;help&#039; for a list of commands)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com_xboard&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;xboard&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        mode &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PROTO_XBOARD&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;new&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;STARTFEN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;force&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; WHITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; BLACK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;st&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;st %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FMOVETIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;sd&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;sd %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FDEPTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;time&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;time %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FTIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;otim&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;otim %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;chronos.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; FTIME&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;go&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        time_xboard_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;hint&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// hint&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;undo&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// undo&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;remove&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// remove&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// post&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;nopost&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// nopost&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;com_ismove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        algebraic_moves&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        time_xboard_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com_uci&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;uci&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        mode &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PROTO_UCI&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;id name CPW-Engine 1.1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;id author Computer Chess Wiki&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;option name Hash type spin default 64 min 1 max 1024&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// send options&lt;/span&gt;
&amp;nbsp;
        com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;uciok&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;isready&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;readyok&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;setoption&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; name&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; value&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;setoption name %s value %s&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;name, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;name, &lt;span class=&quot;st0&quot;&gt;&amp;quot;Hash&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;value, &lt;span class=&quot;st0&quot;&gt;&amp;quot;%d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            tt_setsize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            ttpawn_setsize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ucinewgame&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;position&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;//position [fen | startpos] [moves ...]&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command,&lt;span class=&quot;st0&quot;&gt;&amp;quot;position fen&amp;quot;&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            board_loadFromFen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; moves &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;moves&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;moves&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; algebraic_moves&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;moves&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;go&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        time_uci_go&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;debug&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        debug &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command,&lt;span class=&quot;st0&quot;&gt;&amp;quot;debug off&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ponderhit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        time_uci_ponderhit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;stop&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%s&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;,command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com_sendmove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; promotion &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; parray&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;q&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;r&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;b&#039;&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&#039;n&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; move&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PROTO_XBOARD&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;strcpy&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command,&lt;span class=&quot;st0&quot;&gt;&amp;quot;move &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PROTO_UCI&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;kw3&quot;&gt;strcpy&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command,&lt;span class=&quot;st0&quot;&gt;&amp;quot;bestmove &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;strcpy&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command,&lt;span class=&quot;st0&quot;&gt;&amp;quot;CPW: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    convert_0x88_a&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;, move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    convert_0x88_a&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;, move&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//Promotion piece&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        promotion &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    move&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; parray&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;promotion&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    move&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;strcat&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command, move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* in xboard and nothing actually do the move on the board */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PROTO_XBOARD &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; mode &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PROTO_NOTHING&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; com_ismove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;h&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;1&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;8&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;h&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;1&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;8&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; 
              command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;-&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; 
              command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;q&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;r&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;b&#039;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; command&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;n&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************************** 
 *  command[4] might be:                                        *
 *                                                              *
 *  (a) any kind of a blank space                               *
 *    (b) &#039;-&#039; or any other mark used in opening book processing   *
 *    (c) first letter of a name of a promoted piece              *
 ***************************************************************/&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:6:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:6 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_com&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_com&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_com includeBody-CPW-Engine_com includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chess+Engine+Communication+Protocol&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chess Engine Communication Protocol&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 4, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CLI&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CLI&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 20, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_com&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_com&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_main&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_main&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 13, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/GUI&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;GUI&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 16, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/UCI&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;UCI&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 4, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/WinBoard&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;WinBoard&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 4, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/XBoard&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;XBoard&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 21, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_console_ui</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_console_ui</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_console_ui</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_console_ui</comments>
      <pubDate>Tue, 30 Dec 2014 18:39:56 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Console UI&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void printWelcome() {&amp;lt;br/&amp;gt;     printf(&amp;amp;quot; CPW chess engine &amp;amp;quot;);&amp;lt;br/&amp;gt;     printf( VERSION_STRING );&amp;lt;br/&amp;gt;     printf( &amp;amp;quot;\n&amp;amp;quot;);&amp;lt;br/&amp;gt;     printf( COMPILE_STRING );&amp;lt;br/&amp;gt;     printf(&amp;amp;quot;\n&amp;amp;quot;);&amp;lt;br/&amp;gt;     printf(&amp;amp;quot; created by some members of Chessprogramming Wiki \n&amp;amp;quot;);&amp;lt;br/&amp;gt;     printf(&amp;amp;quot; http://chessprogramming.wikispaces.com/ \n\n&amp;amp;quot;);&amp;lt;br/&amp;gt;     printf(&amp;amp;quot; type &#039;help&#039; for a list of commands \n\n&amp;amp;quot;);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void printHelp() {&amp;lt;br/&amp;gt;printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;- \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;d        =  display current board position \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;bench n  =  test search speed to depth n \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;perft n  =  test perft numbers up to depth n \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;eval     =  display evaluation details \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;stat     =  display search statistics \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;go       =  play for the side to move \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;new      =  start a new game \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;sd n     =  set search depth to n plies \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;st n     =  set search time to n seconds \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;quit     =  exit CPW engine \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;\n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;Please enter moves in algebraic notation (e2e4 d7d5 e4d5 d8d5 ... b7b8q) \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;or better use a GUI compliant with the UCI protocol \n&amp;amp;quot;);&amp;lt;br/&amp;gt;printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;- \n&amp;amp;quot;);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void printStats() {&amp;lt;br/&amp;gt;    U64 nodes = sd.nodes + (sd.nodes == 0);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-\n&amp;amp;quot;);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Nodes       : %d \n&amp;amp;quot;, sd.nodes);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Quiesc nodes: %d \n&amp;amp;quot;, sd.q_nodes);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Ratio       : %d %\n&amp;amp;quot;, sd.q_nodes * 100 / nodes);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-\n&amp;amp;quot;);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void printSearchHeader() {&amp;lt;br/&amp;gt;       printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-\n&amp;amp;quot;);&amp;lt;br/&amp;gt;     printf( &amp;amp;quot;ply      nodes   time score pv\n&amp;amp;quot;);&amp;lt;br/&amp;gt;     printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-\n&amp;amp;quot;);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; printWelcome&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; CPW chess engine &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; VERSION_STRING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; COMPILE_STRING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; created by some members of Chessprogramming Wiki &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; http://chessprogramming.wikispaces.com/ &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; type &#039;help&#039; for a list of commands &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; printHelp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;------------------------------------------ &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;d        =  display current board position &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;bench n  =  test search speed to depth n &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;perft n  =  test perft numbers up to depth n &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;eval     =  display evaluation details &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;stat     =  display search statistics &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;go       =  play for the side to move &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;new      =  start a new game &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;sd n     =  set search depth to n plies &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;st n     =  set search time to n seconds &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;quit     =  exit CPW engine &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Please enter moves in algebraic notation (e2e4 d7d5 e4d5 d8d5 ... b7b8q) &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;or better use a GUI compliant with the UCI protocol &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;------------------------------------------ &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; printStats&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    U64 nodes &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;-----------------------------&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Nodes       : %d &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Quiesc nodes: %d &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;q_nodes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ratio       : %d %&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;q_nodes&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; nodes&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;-----------------------------&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; printSearchHeader&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;-------------------------------------------------------&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ply      nodes   time score pv&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;-------------------------------------------------------&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_console_ui&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_console_ui&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_console_ui includeBody-CPW-Engine_console_ui includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_console_ui&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_console_ui&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_eval</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_eval</link>
      <dc:creator>neurocore</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_eval</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_eval</comments>
      <pubDate>Wed, 27 Jul 2016 04:38:57 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:8:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:8 --&gt;&lt;!-- ws:start:WikiTextTocRule:9: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Description&quot;&gt;Description&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:9 --&gt;&lt;!-- ws:start:WikiTextTocRule:10: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Code&quot;&gt;Code&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:10 --&gt;&lt;!-- ws:start:WikiTextTocRule:11: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:11 --&gt;&lt;!-- ws:start:WikiTextTocRule:12: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:12 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Eval&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Description&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;Description&lt;/h1&gt;
 Using this evaluation function CPW-Engine should be aware of the following principles:&lt;br /&gt;
1) develop the pieces&lt;br /&gt;
2) castle if possible&lt;br /&gt;
3) need some minimal level of assistance to disrupt its own castling position&lt;br /&gt;
4) care for doubled, weak and passed pawns&lt;br /&gt;
5) know a thing or two about the changes of piece values as pawns dissappear&lt;br /&gt;
6) try to attack squares around enemy king&lt;br /&gt;
&lt;br /&gt;
For function definitions, see &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_eval_h&quot;&gt;CPW-Engine_eval_h&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Code&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;Code&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;0x88_math.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;eval.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;transposition.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* adjustements of piece value based on the number of own pawns */&amp;lt;br/&amp;gt;int knight_adj[9] = { -20, -16, -12, -8, -4,  0,  4,  8, 12};&amp;lt;br/&amp;gt;int rook_adj[9] =   {  15,  12,   9,  6,  3,  0, -3, -6, -9};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;static const int SafetyTable[100] = {&amp;lt;br/&amp;gt;    0,  0,   1,   2,   3,   5,   7,   9,  12,  15,&amp;lt;br/&amp;gt;  18,  22,  26,  30,  35,  39,  44,  50,  56,  62,&amp;lt;br/&amp;gt;  68,  75,  82,  85,  89,  97, 105, 113, 122, 131,&amp;lt;br/&amp;gt; 140, 150, 169, 180, 191, 202, 213, 225, 237, 248,&amp;lt;br/&amp;gt; 260, 272, 283, 295, 307, 319, 330, 342, 354, 366,&amp;lt;br/&amp;gt; 377, 389, 401, 412, 424, 436, 448, 459, 471, 483,&amp;lt;br/&amp;gt; 494, 500, 500, 500, 500, 500, 500, 500, 500, 500,&amp;lt;br/&amp;gt; 500, 500, 500, 500, 500, 500, 500, 500, 500, 500,&amp;lt;br/&amp;gt; 500, 500, 500, 500, 500, 500, 500, 500, 500, 500,&amp;lt;br/&amp;gt; 500, 500, 500, 500, 500, 500, 500, 500, 500, 500&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/*******************************************************************&amp;lt;br/&amp;gt;*  This struct holds data about certain aspects of evaluation,     *&amp;lt;br/&amp;gt;*  which allows program to print them if desired.                  *&amp;lt;br/&amp;gt;*******************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;struct eval_vector {&amp;lt;br/&amp;gt;int gamePhase;&amp;lt;br/&amp;gt;int mgMob[2];&amp;lt;br/&amp;gt;int egMob[2];&amp;lt;br/&amp;gt;int attCnt[2];&amp;lt;br/&amp;gt;int attWeight[2];&amp;lt;br/&amp;gt;int kingShield[2];&amp;lt;br/&amp;gt;int MaterialAdjustement[2];&amp;lt;br/&amp;gt;int Blockages[2];&amp;lt;br/&amp;gt;int PositionalThemes[2];&amp;lt;br/&amp;gt;} v;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int eval( int alpha, int beta, int use_hash ) {&amp;lt;br/&amp;gt;    int result = 0, mgScore = 0, egScore = 0;&amp;lt;br/&amp;gt;    int stronger, weaker;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /***********************************************************&amp;lt;br/&amp;gt;    /  Probe the evaluatinon hashtable, unless we call eval()  /&amp;lt;br/&amp;gt;    /  only in order to display detailed result                /&amp;lt;br/&amp;gt;    ***********************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int probeval = tteval_probe();&amp;lt;br/&amp;gt;    if (probeval != INVALID &amp;amp;amp;&amp;amp;amp; use_hash)&amp;lt;br/&amp;gt;        return probeval;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /***********************************************************&amp;lt;br/&amp;gt;    /  Clear all eval data                                     /&amp;lt;br/&amp;gt;    ***********************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    v.gamePhase = 0;&amp;lt;br/&amp;gt;    v.mgMob[WHITE] = 0;      v.mgMob[BLACK] = 0;&amp;lt;br/&amp;gt;    v.egMob[WHITE] = 0;      v.egMob[BLACK] = 0;&amp;lt;br/&amp;gt;    v.attCnt[WHITE] = 0;     v.attCnt[BLACK] = 0;&amp;lt;br/&amp;gt;    v.attWeight[WHITE] = 0;  v.attWeight[BLACK] = 0;&amp;lt;br/&amp;gt;    v.MaterialAdjustement[WHITE] = 0; v.MaterialAdjustement[BLACK] = 0;&amp;lt;br/&amp;gt;    v.Blockages[WHITE] = 0; v.Blockages[BLACK] = 0;&amp;lt;br/&amp;gt;    v.PositionalThemes[WHITE] = 0; v.PositionalThemes[BLACK] = 0;&amp;lt;br/&amp;gt;    v.kingShield[WHITE] = 0; v.kingShield[BLACK] = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* sum the incrementally counted material and pcsq values */&amp;lt;br/&amp;gt;    mgScore = b.PieceMaterial[WHITE] + b.PawnMaterial[WHITE] + b.PcsqMg[WHITE]&amp;lt;br/&amp;gt;            - b.PieceMaterial[BLACK] - b.PawnMaterial[BLACK] - b.PcsqMg[BLACK];&amp;lt;br/&amp;gt;    egScore = b.PieceMaterial[WHITE] + b.PawnMaterial[WHITE] + b.PcsqEg[WHITE]&amp;lt;br/&amp;gt;            - b.PieceMaterial[BLACK] - b.PawnMaterial[BLACK] - b.PcsqEg[BLACK];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* add king&#039;s pawn shield score and evaluate part of piece blockage score&amp;lt;br/&amp;gt;    (the rest of the latter will be done via piece eval) */&amp;lt;br/&amp;gt;    v.kingShield[WHITE] = wKingShield();&amp;lt;br/&amp;gt;    v.kingShield[BLACK] = bKingShield();&amp;lt;br/&amp;gt;    blockedPieces();&amp;lt;br/&amp;gt;    mgScore += (v.kingShield[WHITE] - v.kingShield[BLACK]);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* tempo bonus */&amp;lt;br/&amp;gt;    if ( b.stm == WHITE ) result += e.TEMPO;&amp;lt;br/&amp;gt;    else                  result -= e.TEMPO;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*******************************************************************&amp;lt;br/&amp;gt;    * Adjusting material value for the various combinations of pieces. *&amp;lt;br/&amp;gt;    * Currently it scores bishop, knight and rook pairs. The first one *&amp;lt;br/&amp;gt;    * gets a bonus, the latter two - a penalty. Please also note that  *&amp;lt;br/&amp;gt;    * adjustements of knight and rook value based on the number of own *&amp;lt;br/&amp;gt;    * pawns on the board are done within the piece-specific routines.  *&amp;lt;br/&amp;gt;    *******************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     if ( b.PieceCount[WHITE][BISHOP] &amp;amp;gt; 1 ) result += e.BISHOP_PAIR;&amp;lt;br/&amp;gt;     if ( b.PieceCount[BLACK][BISHOP] &amp;amp;gt; 1 ) result -= e.BISHOP_PAIR;&amp;lt;br/&amp;gt;     if ( b.PieceCount[WHITE][KNIGHT] &amp;amp;gt; 1 ) result -= e.P_KNIGHT_PAIR;&amp;lt;br/&amp;gt;     if ( b.PieceCount[BLACK][KNIGHT] &amp;amp;gt; 1 ) result += e.P_KNIGHT_PAIR;&amp;lt;br/&amp;gt;     if ( b.PieceCount[WHITE]  [ROOK] &amp;amp;gt; 1 ) result -= e.P_ROOK_PAIR;&amp;lt;br/&amp;gt;     if ( b.PieceCount[BLACK]  [ROOK] &amp;amp;gt; 1 ) result += e.P_ROOK_PAIR;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     result += getPawnScore();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*******************************************************************&amp;lt;br/&amp;gt;    *  Evaluate pieces                                                 *&amp;lt;br/&amp;gt;    *******************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   for (U8 row=0; row &amp;amp;lt; 8; row++)&amp;lt;br/&amp;gt;   for (U8 col=0; col &amp;amp;lt; 8; col++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       S8 sq = SET_SQ(row, col);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( b.color[sq] != COLOR_EMPTY ) {&amp;lt;br/&amp;gt;           switch (b.pieces[sq]) {&amp;lt;br/&amp;gt;           case PAWN: // pawns are evaluated separately&amp;lt;br/&amp;gt;           break;&amp;lt;br/&amp;gt;           case KNIGHT:&amp;lt;br/&amp;gt;              EvalKnight(sq, b.color[sq]);&amp;lt;br/&amp;gt;              break;&amp;lt;br/&amp;gt;           case BISHOP:&amp;lt;br/&amp;gt;              EvalBishop(sq, b.color[sq]);&amp;lt;br/&amp;gt;              break;&amp;lt;br/&amp;gt;           case ROOK:&amp;lt;br/&amp;gt;               EvalRook(sq, b.color[sq]);&amp;lt;br/&amp;gt;               break;&amp;lt;br/&amp;gt;           case QUEEN:&amp;lt;br/&amp;gt;               EvalQueen(sq, b.color[sq]);&amp;lt;br/&amp;gt;               break;&amp;lt;br/&amp;gt;           case KING:&amp;lt;br/&amp;gt;               break;&amp;lt;br/&amp;gt;       }&amp;lt;br/&amp;gt;     }&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   /********************************************************************&amp;lt;br/&amp;gt;   *  Merge midgame and endgame score. We interpolate between these    *&amp;lt;br/&amp;gt;   *  two values, using a gamePhase value, based on remaining piece    *&amp;lt;br/&amp;gt;   *  material on both sides. With less pieces, endgame score beco-    *&amp;lt;br/&amp;gt;   *  mes more influential.                                            *&amp;lt;br/&amp;gt;   ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   mgScore += (v.mgMob[WHITE] - v.mgMob[BLACK]);&amp;lt;br/&amp;gt;   egScore += (v.egMob[WHITE] - v.egMob[BLACK]);&amp;lt;br/&amp;gt;   if (v.gamePhase &amp;amp;gt; 24) v.gamePhase = 24;&amp;lt;br/&amp;gt;   int mgWeight = v.gamePhase;&amp;lt;br/&amp;gt;   int egWeight = 24 - mgWeight;&amp;lt;br/&amp;gt;   result += ( (mgScore * mgWeight) + (egScore * egWeight) ) / 24;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   /********************************************************************&amp;lt;br/&amp;gt;   *  Add phase-independent score components.                          *&amp;lt;br/&amp;gt;   ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   result += (v.Blockages[WHITE] - v.Blockages[BLACK]);&amp;lt;br/&amp;gt;   result += (v.PositionalThemes[WHITE] - v.PositionalThemes[BLACK]);&amp;lt;br/&amp;gt;   result += (v.MaterialAdjustement[WHITE] - v.MaterialAdjustement[BLACK]);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   /********************************************************************&amp;lt;br/&amp;gt;    *  Merge king attack score. We don&#039;t apply this value if there are *&amp;lt;br/&amp;gt;    *  less than two attackers or if the attacker has no queen.        *&amp;lt;br/&amp;gt;    *******************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   if (v.attCnt[WHITE] &amp;amp;lt; 2 || b.PieceCount[WHITE][QUEEN] == 0) v.attWeight[WHITE] = 0;&amp;lt;br/&amp;gt;   if (v.attCnt[BLACK] &amp;amp;lt; 2 || b.PieceCount[BLACK][QUEEN] == 0) v.attWeight[BLACK] = 0;&amp;lt;br/&amp;gt;   result += SafetyTable[v.attWeight[WHITE]];&amp;lt;br/&amp;gt;   result -= SafetyTable[v.attWeight[BLACK]];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   /********************************************************************&amp;lt;br/&amp;gt;   *  Low material correction - guarding against an illusory material  *&amp;lt;br/&amp;gt;   *  advantage. Full blown program should have more such rules,  but  *&amp;lt;br/&amp;gt;   *  the current set ought to be useful enough. Please note that our  *&amp;lt;br/&amp;gt;   *  code  assumes different material values for bishop and  knight.  *&amp;lt;br/&amp;gt;   *                                                                   *&amp;lt;br/&amp;gt;   *  - a single minor piece cannot win                                *&amp;lt;br/&amp;gt;   *  - two knights cannot checkmate bare king                         *&amp;lt;br/&amp;gt;   *  - bare rook vs minor piece is drawish                            *&amp;lt;br/&amp;gt;   *  - rook and minor vs rook is drawish                              *&amp;lt;br/&amp;gt;   ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   if (result &amp;amp;gt; 0) { stronger = WHITE; weaker = BLACK; }&amp;lt;br/&amp;gt;   else               { stronger = BLACK; weaker = WHITE; }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   if (b.PawnMaterial[stronger] == 0) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if (b.PieceMaterial[stronger] &amp;amp;lt; 400) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if (b.PawnMaterial[weaker] == 0&amp;lt;br/&amp;gt;           &amp;amp;amp;&amp;amp;amp; (b.PieceMaterial[stronger] == 2 * e.PIECE_VALUE[KNIGHT]))&amp;lt;br/&amp;gt;           return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if (b.PieceMaterial[stronger] == e.PIECE_VALUE[ROOK]&amp;lt;br/&amp;gt;           &amp;amp;amp;&amp;amp;amp; b.PieceMaterial[weaker] == e.PIECE_VALUE[BISHOP]) result /= 2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if (b.PieceMaterial[stronger] == e.PIECE_VALUE[ROOK]&amp;lt;br/&amp;gt;           &amp;amp;amp;&amp;amp;amp; b.PieceMaterial[weaker] == e.PIECE_VALUE[KNIGHT]) result /= 2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if (b.PieceMaterial[stronger] == e.PIECE_VALUE[ROOK] + e.PIECE_VALUE[BISHOP]&amp;lt;br/&amp;gt;           &amp;amp;amp;&amp;amp;amp; b.PieceMaterial[stronger] == e.PIECE_VALUE[ROOK]) result /= 2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if (b.PieceMaterial[stronger] == e.PIECE_VALUE[ROOK] + e.PIECE_VALUE[KNIGHT]&amp;lt;br/&amp;gt;           &amp;amp;amp;&amp;amp;amp; b.PieceMaterial[stronger] == e.PIECE_VALUE[ROOK]) result /= 2;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*******************************************************************&amp;lt;br/&amp;gt;    *  Finally return the score relative to the side to move.          *&amp;lt;br/&amp;gt;    *******************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( b.stm == BLACK ) result = -result;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    tteval_save(result);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void EvalKnight(S8 sq, S8 side) {&amp;lt;br/&amp;gt;     int att = 0;&amp;lt;br/&amp;gt;     int mob = 0;&amp;lt;br/&amp;gt;     int pos;&amp;lt;br/&amp;gt;      v.gamePhase += 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     if (side == WHITE) {&amp;lt;br/&amp;gt;         switch (sq) {&amp;lt;br/&amp;gt;         case A8: if (isPiece(BLACK, PAWN, A7) || isPiece(BLACK, PAWN, C7)) v.Blockages[WHITE] -= e.P_KNIGHT_TRAPPED_A8; break;&amp;lt;br/&amp;gt;         case H8: if (isPiece(BLACK, PAWN, H7) || isPiece(BLACK, PAWN, F7)) v.Blockages[WHITE] -= e.P_KNIGHT_TRAPPED_A8; break;&amp;lt;br/&amp;gt;         case A7: if (isPiece(BLACK, PAWN, A6) &amp;amp;amp;&amp;amp;amp; isPiece(BLACK, PAWN, B7)) v.Blockages[WHITE] -= e.P_KNIGHT_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case H7: if (isPiece(BLACK, PAWN, H6) &amp;amp;amp;&amp;amp;amp; isPiece(BLACK, PAWN, G7)) v.Blockages[WHITE] -= e.P_KNIGHT_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case C3: if (isPiece(WHITE, PAWN, C2) &amp;amp;amp;&amp;amp;amp; isPiece(WHITE, PAWN, D4) &amp;amp;amp;&amp;amp;amp; !isPiece(WHITE, PAWN, E4)) v.Blockages[WHITE] -= e.P_C3_KNIGHT; break;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;     }&amp;lt;br/&amp;gt;     else&amp;lt;br/&amp;gt;     {&amp;lt;br/&amp;gt;         switch (sq) {&amp;lt;br/&amp;gt;         case A1: if (isPiece(WHITE, PAWN, A2) || isPiece(WHITE, PAWN, C2)) v.Blockages[BLACK] -= e.P_KNIGHT_TRAPPED_A8; break;&amp;lt;br/&amp;gt;         case H1: if (isPiece(WHITE, PAWN, H2) || isPiece(WHITE, PAWN, F2)) v.Blockages[BLACK] -= e.P_KNIGHT_TRAPPED_A8; break;&amp;lt;br/&amp;gt;         case A2: if (isPiece(WHITE, PAWN, A3) &amp;amp;amp;&amp;amp;amp; isPiece(WHITE, PAWN, B2)) v.Blockages[BLACK] -= e.P_KNIGHT_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case H2: if (isPiece(WHITE, PAWN, H3) &amp;amp;amp;&amp;amp;amp; isPiece(WHITE, PAWN, G2)) v.Blockages[BLACK] -= e.P_KNIGHT_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case C6: if (isPiece(BLACK, PAWN, C7) &amp;amp;amp;&amp;amp;amp; isPiece(BLACK, PAWN, D5) &amp;amp;amp;&amp;amp;amp; !isPiece(BLACK, PAWN, E5)) v.Blockages[BLACK] -= e.P_C3_KNIGHT; break;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;     }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     /***************************************************************&amp;lt;br/&amp;gt;     *  Material value adjustement based on the no. of own pawns.   *&amp;lt;br/&amp;gt;     *  Knights lose value as pawns disappear.                      *&amp;lt;br/&amp;gt;     ***************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     v.MaterialAdjustement[side] += knight_adj[b.PieceCount[side][PAWN]];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  Collect data about mobility and king attacks. This resembles *&amp;lt;br/&amp;gt;    *  move generation code, except that we are just incrementing   *&amp;lt;br/&amp;gt;    *  the counters instead of adding actual moves.                 *&amp;lt;br/&amp;gt;    ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (U8 dir=0;dir&amp;amp;lt;8;dir++) {&amp;lt;br/&amp;gt;        pos = sq + vector[KNIGHT][dir];&amp;lt;br/&amp;gt;        if ( IS_SQ(pos) &amp;amp;amp;&amp;amp;amp; b.color[pos] != side ) {&amp;lt;br/&amp;gt;           ++mob;&amp;lt;br/&amp;gt;           if ( e.sqNearK[!side] [b.KingLoc[!side] ] [pos] )&amp;lt;br/&amp;gt;               ++att; // this knight is attacking zone around enemy king&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  Evaluate mobility. We try to do it in such a way             *&amp;lt;br/&amp;gt;    *  that  zero represents average mobility, but  our             *&amp;lt;br/&amp;gt;    *  formula of doing so is a puer guess.                         *&amp;lt;br/&amp;gt;    ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    v.mgMob[side] += 4 * (mob-4);&amp;lt;br/&amp;gt;    v.egMob[side] += 4 * (mob-4);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  Save data about king attacks                                 *&amp;lt;br/&amp;gt;    ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (att) {&amp;lt;br/&amp;gt;       v.attCnt[side]++;&amp;lt;br/&amp;gt;       v.attWeight[side] += 2 * att;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void EvalBishop(S8 sq, S8 side) {&amp;lt;br/&amp;gt;     int att = 0;&amp;lt;br/&amp;gt;     int mob = 0;&amp;lt;br/&amp;gt;     v.gamePhase += 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     if (side == WHITE) {&amp;lt;br/&amp;gt;         switch (sq) {&amp;lt;br/&amp;gt;         case A7: if (isPiece(BLACK, PAWN, B6)) v.Blockages[WHITE] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case H7: if (isPiece(BLACK, PAWN, G6)) v.Blockages[WHITE] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case B8: if (isPiece(BLACK, PAWN, C7)) v.Blockages[WHITE] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case G8: if (isPiece(BLACK, PAWN, F7)) v.Blockages[WHITE] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case A6: if (isPiece(BLACK, PAWN, B5)) v.Blockages[WHITE] -= e.P_BISHOP_TRAPPED_A6; break;&amp;lt;br/&amp;gt;         case H6: if (isPiece(BLACK, PAWN, G5)) v.Blockages[WHITE] -= e.P_BISHOP_TRAPPED_A6; break;&amp;lt;br/&amp;gt;         case F1: if (isPiece(WHITE, KING, G1)) v.PositionalThemes[WHITE] += e.RETURNING_BISHOP; break;&amp;lt;br/&amp;gt;         case C1: if (isPiece(WHITE, KING, B1)) v.PositionalThemes[WHITE] += e.RETURNING_BISHOP; break;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;     }&amp;lt;br/&amp;gt;     else {&amp;lt;br/&amp;gt;         switch (sq) {&amp;lt;br/&amp;gt;         case A2: if (isPiece(WHITE, PAWN, B3)) v.Blockages[BLACK] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case H2: if (isPiece(WHITE, PAWN, G3)) v.Blockages[BLACK] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case B1: if (isPiece(WHITE, PAWN, C2)) v.Blockages[BLACK] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case G1: if (isPiece(WHITE, PAWN, F2)) v.Blockages[BLACK] -= e.P_BISHOP_TRAPPED_A7; break;&amp;lt;br/&amp;gt;         case A3: if (isPiece(WHITE, PAWN, B4)) v.Blockages[BLACK] -= e.P_BISHOP_TRAPPED_A6; break;&amp;lt;br/&amp;gt;         case H3: if (isPiece(WHITE, PAWN, G4)) v.Blockages[BLACK] -= e.P_BISHOP_TRAPPED_A6; break;&amp;lt;br/&amp;gt;         case F8: if (isPiece(BLACK, KING, G8)) v.PositionalThemes[BLACK] += e.RETURNING_BISHOP; break;&amp;lt;br/&amp;gt;         case C8: if (isPiece(BLACK, KING, B8)) v.PositionalThemes[BLACK] += e.RETURNING_BISHOP; break;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;     }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  Collect data about mobility and king attacks                 *&amp;lt;br/&amp;gt;    ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (char dir=0;dir&amp;amp;lt;vectors[BISHOP];dir++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;         for (char pos = sq;;) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;              pos = pos + vector[BISHOP][dir];&amp;lt;br/&amp;gt;              if (! IS_SQ(pos)) break;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;              if (b.pieces[pos] == PIECE_EMPTY) {&amp;lt;br/&amp;gt;                 mob++;&amp;lt;br/&amp;gt;                 if ( e.sqNearK[!side] [b.KingLoc[!side] ] [pos] ) ++att;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;              else if (b.color[pos] != side) {&amp;lt;br/&amp;gt;                   mob++;&amp;lt;br/&amp;gt;                   if ( e.sqNearK[!side] [b.KingLoc[!side] ] [pos] ) ++att;&amp;lt;br/&amp;gt;                   break;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;              else {&amp;lt;br/&amp;gt;                   break;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    v.mgMob[side] += 3 * (mob-7);&amp;lt;br/&amp;gt;    v.egMob[side] += 3 * (mob-7);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (att) {&amp;lt;br/&amp;gt;       v.attCnt[side]++;&amp;lt;br/&amp;gt;       v.attWeight[side] += 2*att;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void EvalRook(S8 sq, S8 side) {&amp;lt;br/&amp;gt;    int att = 0;&amp;lt;br/&amp;gt;    int mob = 0;&amp;lt;br/&amp;gt;    int ownBlockingPawns = 0;&amp;lt;br/&amp;gt;    int oppBlockingPawns = 0;&amp;lt;br/&amp;gt;    int stepFwd;&amp;lt;br/&amp;gt;    int nextSq;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    v.gamePhase += 2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /***************************************************************&amp;lt;br/&amp;gt;    *  Material value adjustement based on the no. of own pawns.   *&amp;lt;br/&amp;gt;    *  Rooks gain value as pawns disappear.                        *&amp;lt;br/&amp;gt;    ***************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    v.MaterialAdjustement[side] += rook_adj[b.PieceCount[side][PAWN]];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /***************************************************************&amp;lt;br/&amp;gt;    *  This is an ugly hack to detect open files. Merging it with  *&amp;lt;br/&amp;gt;    *  mobility  eval would have been better, but less  readable,  *&amp;lt;br/&amp;gt;    *  and this is educational program fter all.                   *&amp;lt;br/&amp;gt;    /**************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (side == WHITE) stepFwd = NORTH; else stepFwd = SOUTH;&amp;lt;br/&amp;gt;    nextSq = sq + stepFwd;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    while (IS_SQ(nextSq)) {&amp;lt;br/&amp;gt;        if (b.pieces[nextSq] == PAWN) {&amp;lt;br/&amp;gt;            if (b.color[nextSq] == side) {&amp;lt;br/&amp;gt;               ownBlockingPawns++;&amp;lt;br/&amp;gt;               break;&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;            else&amp;lt;br/&amp;gt;               oppBlockingPawns++;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        nextSq += stepFwd;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  Evaluate open and half-open files. We merge this bonus with  *&amp;lt;br/&amp;gt;    *  mobility  score.                                             *&amp;lt;br/&amp;gt;    /***************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( !ownBlockingPawns ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( !oppBlockingPawns ) {&amp;lt;br/&amp;gt;           v.mgMob[side] += e.ROOK_OPEN;&amp;lt;br/&amp;gt;           v.egMob[side] += e.ROOK_OPEN;&amp;lt;br/&amp;gt;       } else {&amp;lt;br/&amp;gt;           v.mgMob[side] += e.ROOK_HALF;&amp;lt;br/&amp;gt;           v.egMob[side] += e.ROOK_HALF;&amp;lt;br/&amp;gt;       }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  Collect data about mobility and king attacks                 *&amp;lt;br/&amp;gt;    ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (char dir=0; dir&amp;amp;lt;vectors[ROOK]; dir++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;         for (char pos = sq;;) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;              pos = pos + vector[ROOK][dir];&amp;lt;br/&amp;gt;              if (! IS_SQ(pos)) break;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;              if (b.pieces[pos] == PIECE_EMPTY) {&amp;lt;br/&amp;gt;                 mob++;&amp;lt;br/&amp;gt;                 if ( e.sqNearK[!side] [b.KingLoc[!side] ] [pos] ) ++att;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;              else if (b.color[pos] != side) {&amp;lt;br/&amp;gt;                   mob++;&amp;lt;br/&amp;gt;                   if ( e.sqNearK[!side] [b.KingLoc[!side] ] [pos] ) ++att;&amp;lt;br/&amp;gt;                   break;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;              else {&amp;lt;br/&amp;gt;                   break;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    v.mgMob[side] += 2 * (mob-7);&amp;lt;br/&amp;gt;    v.egMob[side] += 4 * (mob-7);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (att) {&amp;lt;br/&amp;gt;       v.attCnt[side]++;&amp;lt;br/&amp;gt;       v.attWeight[side] += 3*att;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void EvalQueen(S8 sq, S8 side) {&amp;lt;br/&amp;gt;    v.gamePhase += 4;&amp;lt;br/&amp;gt;    int att = 0;&amp;lt;br/&amp;gt;    int mob = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  A queen should not be developed too early                    *&amp;lt;br/&amp;gt;    ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (side == WHITE &amp;amp;amp;&amp;amp;amp; ROW(sq) &amp;amp;gt; ROW_2) {&amp;lt;br/&amp;gt;        if (isPiece(WHITE, KNIGHT, B1)) v.PositionalThemes[WHITE] -= 2;&amp;lt;br/&amp;gt;        if (isPiece(WHITE, BISHOP, C1)) v.PositionalThemes[WHITE] -= 2;&amp;lt;br/&amp;gt;        if (isPiece(WHITE, BISHOP, F1)) v.PositionalThemes[WHITE] -= 2;&amp;lt;br/&amp;gt;        if (isPiece(WHITE, KNIGHT, G1)) v.PositionalThemes[WHITE] -= 2;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (side == BLACK &amp;amp;amp;&amp;amp;amp; ROW(sq) &amp;amp;lt; ROW_7) {&amp;lt;br/&amp;gt;        if (isPiece(BLACK, KNIGHT, B8)) v.PositionalThemes[BLACK] -= 2;&amp;lt;br/&amp;gt;        if (isPiece(BLACK, BISHOP, C8)) v.PositionalThemes[BLACK] -= 2;&amp;lt;br/&amp;gt;        if (isPiece(BLACK, BISHOP, F8)) v.PositionalThemes[BLACK] -= 2;&amp;lt;br/&amp;gt;        if (isPiece(BLACK, KNIGHT, G8)) v.PositionalThemes[BLACK] -= 2;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /****************************************************************&amp;lt;br/&amp;gt;    *  Collect data about mobility and king attacks                 *&amp;lt;br/&amp;gt;    ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (char dir=0;dir&amp;amp;lt;vectors[QUEEN];dir++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;         for (char pos = sq;;) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;              pos = pos + vector[QUEEN][dir];&amp;lt;br/&amp;gt;              if (! IS_SQ(pos)) break;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;              if (b.pieces[pos] == PIECE_EMPTY) {&amp;lt;br/&amp;gt;                 mob++;&amp;lt;br/&amp;gt;                 if ( e.sqNearK[!side] [b.KingLoc[!side] ] [pos] ) ++att;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;              else if (b.color[pos] != side) {&amp;lt;br/&amp;gt;                   mob++;&amp;lt;br/&amp;gt;                   if ( e.sqNearK[!side] [b.KingLoc[!side] ] [pos] ) ++att;&amp;lt;br/&amp;gt;                   break;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;              else {&amp;lt;br/&amp;gt;                   break;&amp;lt;br/&amp;gt;              }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    v.mgMob[side] += 1 * (mob-14);&amp;lt;br/&amp;gt;    v.egMob[side] += 2 * (mob-14);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (att) {&amp;lt;br/&amp;gt;       v.attCnt[side]++;&amp;lt;br/&amp;gt;       v.attWeight[side] += 4*att;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int wKingShield() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int result = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* king on the kingside */&amp;lt;br/&amp;gt;    if ( COL(b.KingLoc[WHITE]) &amp;amp;gt; COL_E ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(WHITE, PAWN, F2) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(WHITE, PAWN, F3) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(WHITE, PAWN, G2) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(WHITE, PAWN, G3) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(WHITE, PAWN, H2) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(WHITE, PAWN, H3) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   /* king on the queenside */&amp;lt;br/&amp;gt;   else if ( COL(b.KingLoc[WHITE]) &amp;amp;lt; COL_D ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(WHITE, PAWN, A2) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(WHITE, PAWN, A3) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(WHITE, PAWN, B2) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(WHITE, PAWN, B3) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(WHITE, PAWN, C2) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(WHITE, PAWN, C3) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int bKingShield() {&amp;lt;br/&amp;gt;    int result = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  /* king on the kingside */&amp;lt;br/&amp;gt;  if ( COL(b.KingLoc[BLACK]) &amp;amp;gt; COL_E ) {&amp;lt;br/&amp;gt;        if ( isPiece(BLACK, PAWN, F7) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;        else if ( isPiece(BLACK, PAWN, F6) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( isPiece(BLACK, PAWN, G7) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;        else if ( isPiece(BLACK, PAWN, G6) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( isPiece(BLACK, PAWN, H7) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;        else if ( isPiece(BLACK, PAWN, H6) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   /* king on the queenside */&amp;lt;br/&amp;gt;   else if ( COL(b.KingLoc[BLACK]) &amp;amp;lt; COL_D ) {&amp;lt;br/&amp;gt;       if ( isPiece(BLACK, PAWN, A7) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(BLACK, PAWN, A6) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(BLACK, PAWN, B7) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(BLACK, PAWN, B6) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if ( isPiece(BLACK, PAWN, C7) )  result += e.SHIELD_1;&amp;lt;br/&amp;gt;       else if ( isPiece(BLACK, PAWN, C6) )  result += e.SHIELD_2;&amp;lt;br/&amp;gt;  }&amp;lt;br/&amp;gt;  return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/******************************************************************************&amp;lt;br/&amp;gt;*                            Pawn structure evaluaton                         *&amp;lt;br/&amp;gt;******************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int getPawnScore() {&amp;lt;br/&amp;gt;    int result;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /**************************************************************************&amp;lt;br/&amp;gt;    *  This function wraps hashing mechanism around evalPawnStructure().      *&amp;lt;br/&amp;gt;    *  Please note  that since we use the pawn hashtable, evalPawnStructure() *&amp;lt;br/&amp;gt;    *  must not take into account the piece position.  In a more elaborate    *&amp;lt;br/&amp;gt;    *  program, pawn hashtable would contain only the characteristics of pawn *&amp;lt;br/&amp;gt;    *  structure,  and scoring them in conjunction with the piece position    *&amp;lt;br/&amp;gt;    *  would have been done elsewhere.                                        *&amp;lt;br/&amp;gt;    **************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int probeval = ttpawn_probe();&amp;lt;br/&amp;gt;    if (probeval != INVALID)&amp;lt;br/&amp;gt;        return probeval;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    result = evalPawnStructure();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    ttpawn_save(result);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int evalPawnStructure() {&amp;lt;br/&amp;gt;    int result = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (U8 row = 0; row &amp;amp;lt; 8; row++)&amp;lt;br/&amp;gt;    for (U8 col = 0; col &amp;amp;lt; 8; col++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       S8 sq = SET_SQ(row, col);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;       if (b.pieces[sq] == PAWN) {&amp;lt;br/&amp;gt;           if (b.color[sq] == WHITE) result += EvalPawn(sq, WHITE);&amp;lt;br/&amp;gt;           else                      result -= EvalPawn(sq, BLACK);&amp;lt;br/&amp;gt;       }&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int EvalPawn(S8 sq, S8 side) {&amp;lt;br/&amp;gt;    int result = 0;&amp;lt;br/&amp;gt;    int flagIsPassed = 1; // we will be trying to disprove that&amp;lt;br/&amp;gt;    int flagIsWeak = 1;   // we will be trying to disprove that&amp;lt;br/&amp;gt;    int flagIsOpposed = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int stepFwd, stepBck;&amp;lt;br/&amp;gt;    if (side == WHITE) stepFwd = NORTH; else stepFwd = SOUTH;&amp;lt;br/&amp;gt;    if (side == WHITE) stepBck = SOUTH; else stepBck = NORTH;&amp;lt;br/&amp;gt;    S8 nextSq = sq + stepFwd;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*************************************************************************&amp;lt;br/&amp;gt;    *   We have only very basic data structures that do not update informa-  *&amp;lt;br/&amp;gt;    *   tion about pawns incrementally, so we have to calculate everything   *&amp;lt;br/&amp;gt;    *   here.  The loop below detects doubled pawns, passed pawns and sets   *&amp;lt;br/&amp;gt;    *   a flag on finding that our pawn is opposed by enemy pawn.            *&amp;lt;br/&amp;gt;    *************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    while (IS_SQ(nextSq)) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (b.pieces[nextSq] == PAWN) { // either opposed by enemy pawn or doubled&amp;lt;br/&amp;gt;            flagIsPassed = 0;&amp;lt;br/&amp;gt;            if (b.color[nextSq] == side)&amp;lt;br/&amp;gt;                result -= 20;       // doubled pawn penalty&amp;lt;br/&amp;gt;            else&amp;lt;br/&amp;gt;                flagIsOpposed = 1;  // flag our pawn as opposed&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (IS_SQ(nextSq + WEST) &amp;amp;amp;&amp;amp;amp; isPiece(!side, PAWN, nextSq + WEST))&amp;lt;br/&amp;gt;            flagIsPassed = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (IS_SQ(nextSq + EAST) &amp;amp;amp;&amp;amp;amp; isPiece(!side, PAWN, nextSq + EAST))&amp;lt;br/&amp;gt;            flagIsPassed = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        nextSq += stepFwd;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*************************************************************************&amp;lt;br/&amp;gt;    *   Another loop, going backwards and checking whether pawn has support. *&amp;lt;br/&amp;gt;    *   Here we can at least break out of it for speed optimization.         *&amp;lt;br/&amp;gt;    *************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    nextSq = sq;&amp;lt;br/&amp;gt;    while (IS_SQ(nextSq)) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (IS_SQ(nextSq + WEST) &amp;amp;amp;&amp;amp;amp; isPiece(side, PAWN, nextSq + WEST)) {&amp;lt;br/&amp;gt;            flagIsWeak = 0;&amp;lt;br/&amp;gt;            break;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (IS_SQ(nextSq + EAST) &amp;amp;amp;&amp;amp;amp; isPiece(side, PAWN, nextSq + EAST)) {&amp;lt;br/&amp;gt;            flagIsWeak = 0;&amp;lt;br/&amp;gt;            break;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        nextSq += stepBck;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*************************************************************************&amp;lt;br/&amp;gt;    *  Evaluate passed pawns, scoring them higher if they are protected      *&amp;lt;br/&amp;gt;    *  or if their advance is supported by friendly pawns                    *&amp;lt;br/&amp;gt;    *************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( flagIsPassed ) {&amp;lt;br/&amp;gt;        if ( isPawnSupported(sq, side) ) result += e.protected_passer[side][sq];&amp;lt;br/&amp;gt;        else                             result += e.passed_pawn[side][sq];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*************************************************************************&amp;lt;br/&amp;gt;    *  Evaluate weak pawns, increasing the penalty if they are situated      *&amp;lt;br/&amp;gt;    *  on a half-open file                                                   *&amp;lt;br/&amp;gt;    *************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( flagIsWeak ) {&amp;lt;br/&amp;gt;        result += e.weak_pawn[side][sq];&amp;lt;br/&amp;gt;        if (!flagIsOpposed)&amp;lt;br/&amp;gt;            result -= 4;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int isPawnSupported(S8 sq, S8 side) {&amp;lt;br/&amp;gt;    int step;&amp;lt;br/&amp;gt;    if (side == WHITE) step = SOUTH; else step = NORTH;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( IS_SQ(sq+WEST) &amp;amp;amp;&amp;amp;amp; isPiece(side,PAWN, sq + WEST) ) return 1;&amp;lt;br/&amp;gt;    if ( IS_SQ(sq+EAST) &amp;amp;amp;&amp;amp;amp; isPiece(side,PAWN, sq + EAST) ) return 1;&amp;lt;br/&amp;gt;    if ( IS_SQ(sq+step+WEST) &amp;amp;amp;&amp;amp;amp; isPiece(side,PAWN, sq + step+WEST ) ) return 1;&amp;lt;br/&amp;gt;    if ( IS_SQ(sq+step+EAST) &amp;amp;amp;&amp;amp;amp; isPiece(side,PAWN, sq + step+EAST ) ) return 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/******************************************************************************&amp;lt;br/&amp;gt;*                             Pattern detection                               *&amp;lt;br/&amp;gt;******************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void blockedPieces() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // central pawn blocked, bishop hard to develop&amp;lt;br/&amp;gt;    if (isPiece(WHITE, BISHOP, C1) &amp;amp;amp;&amp;amp;amp; isPiece(WHITE, PAWN, D2) &amp;amp;amp;&amp;amp;amp; b.color[D3] != COLOR_EMPTY)&amp;lt;br/&amp;gt;        v.Blockages[WHITE] -= e.P_BLOCK_CENTRAL_PAWN;&amp;lt;br/&amp;gt;    if (isPiece(WHITE, BISHOP, F1) &amp;amp;amp;&amp;amp;amp;  isPiece(WHITE, PAWN, E2) &amp;amp;amp;&amp;amp;amp; b.color[E3] != COLOR_EMPTY)&amp;lt;br/&amp;gt;        v.Blockages[WHITE] -= e.P_BLOCK_CENTRAL_PAWN;&amp;lt;br/&amp;gt;    if (isPiece(BLACK, BISHOP, C8) &amp;amp;amp;&amp;amp;amp;  isPiece(BLACK, PAWN, D7) &amp;amp;amp;&amp;amp;amp; b.color[D6] != COLOR_EMPTY)&amp;lt;br/&amp;gt;        v.Blockages[BLACK] -= e.P_BLOCK_CENTRAL_PAWN;&amp;lt;br/&amp;gt;    if (isPiece(BLACK, BISHOP, F8) &amp;amp;amp;&amp;amp;amp; isPiece(BLACK, PAWN, E7) &amp;amp;amp;&amp;amp;amp; b.color[E6] != COLOR_EMPTY)&amp;lt;br/&amp;gt;        v.Blockages[BLACK] -= e.P_BLOCK_CENTRAL_PAWN;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // uncastled king blocking own rook&amp;lt;br/&amp;gt;    if ( ( isPiece(WHITE, KING, F1) || isPiece(WHITE, KING, G1 ) )&amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;         ( isPiece(WHITE, ROOK, H1) || isPiece(WHITE, ROOK, G1 ) )&amp;lt;br/&amp;gt;       )&amp;lt;br/&amp;gt;       v.Blockages[WHITE] -= e.P_KING_BLOCKS_ROOK;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( ( isPiece(WHITE, KING, C1) || isPiece(WHITE, KING, B1 ) )&amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;         ( isPiece(WHITE, ROOK, A1) || isPiece(WHITE, ROOK, B1 ) )&amp;lt;br/&amp;gt;       )&amp;lt;br/&amp;gt;       v.Blockages[WHITE] -= e.P_KING_BLOCKS_ROOK;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( ( isPiece(BLACK, KING, F8) || isPiece(BLACK, KING, G8 ) )&amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;         ( isPiece(BLACK, ROOK, H8) || isPiece(BLACK, ROOK, G8 ) )&amp;lt;br/&amp;gt;       )&amp;lt;br/&amp;gt;       v.Blockages[BLACK] -= e.P_KING_BLOCKS_ROOK;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( ( isPiece(BLACK, KING, C8) || isPiece(BLACK, KING, B8 ) )&amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;         ( isPiece(BLACK, ROOK, A8) || isPiece(BLACK, ROOK, B8 ) )&amp;lt;br/&amp;gt;       )&amp;lt;br/&amp;gt;       v.Blockages[BLACK] -= e.P_KING_BLOCKS_ROOK;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int isPiece(U8 color, U8 piece, S8 sq) {&amp;lt;br/&amp;gt;    return ( (b.pieces[sq] == piece) &amp;amp;amp;&amp;amp;amp; (b.color[sq] == color) );&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/***************************************************************************************&amp;lt;br/&amp;gt;*                             Printing eval results                                    *&amp;lt;br/&amp;gt;***************************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void printEval() {&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-\n&amp;amp;quot;);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Total value (for side to move): %d \n&amp;amp;quot;, eval(-INF,INF, 0) );&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Material balance    : %d \n&amp;amp;quot;, b.PieceMaterial[WHITE] + b.PawnMaterial[WHITE] - b.PieceMaterial[BLACK] - b.PawnMaterial[BLACK] );&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Material adjustement: &amp;amp;quot;); printEvalFactor(v.MaterialAdjustement[WHITE], v.MaterialAdjustement[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Mg Piece/square tables : &amp;amp;quot;); printEvalFactor(b.PcsqMg[WHITE], b.PcsqMg[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Eg Piece/square tables : &amp;amp;quot;); printEvalFactor(b.PcsqEg[WHITE], b.PcsqEg[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Mg Mobility            : &amp;amp;quot;); printEvalFactor(v.mgMob[WHITE], v.mgMob[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Eg Mobility            : &amp;amp;quot;); printEvalFactor(v.mgMob[WHITE], v.egMob[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Pawn structure      : %d \n&amp;amp;quot;, evalPawnStructure() );&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Blockages           : &amp;amp;quot;); printEvalFactor(v.Blockages[WHITE], v.Blockages[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Positional themes   : &amp;amp;quot;); printEvalFactor(v.PositionalThemes[WHITE], v.PositionalThemes[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;King Shield         : &amp;amp;quot;); printEvalFactor(v.kingShield[WHITE], v.kingShield[BLACK]);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;Tempo: &amp;amp;quot;);&amp;lt;br/&amp;gt;    if ( b.stm == WHITE ) printf(&amp;amp;quot;%d&amp;amp;quot;, e.TEMPO); else printf(&amp;amp;quot;%d&amp;amp;quot;, -e.TEMPO);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;\n&amp;amp;quot;);&amp;lt;br/&amp;gt;    printf(&amp;amp;quot;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-\n&amp;amp;quot;);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void printEvalFactor(int wh, int bl) {&amp;lt;br/&amp;gt;     printf(&amp;amp;quot;white %4d, black %4d, total: %4d \n&amp;amp;quot;, wh, bl, wh - bl);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;0x88_math.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;eval.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;transposition.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* adjustements of piece value based on the number of own pawns */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; knight_adj&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rook_adj&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; SafetyTable&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;,
  &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;,
  &lt;span class=&quot;nu0&quot;&gt;68&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;75&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;82&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;85&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;89&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;97&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;105&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;113&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;122&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;131&lt;/span&gt;,
 &lt;span class=&quot;nu0&quot;&gt;140&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;169&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;180&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;191&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;202&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;213&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;225&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;237&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;248&lt;/span&gt;,
 &lt;span class=&quot;nu0&quot;&gt;260&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;272&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;283&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;295&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;307&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;319&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;330&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;342&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;354&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;366&lt;/span&gt;,
 &lt;span class=&quot;nu0&quot;&gt;377&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;389&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;401&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;412&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;424&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;436&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;448&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;459&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;471&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;483&lt;/span&gt;,
 &lt;span class=&quot;nu0&quot;&gt;494&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;,
 &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;,
 &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;,
 &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/*******************************************************************
*  This struct holds data about certain aspects of evaluation,     *
*  which allows program to print them if desired.                  *
*******************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;struct&lt;/span&gt; eval_vector &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; gamePhase&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mgMob&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; egMob&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; attCnt&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; attWeight&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; kingShield&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; MaterialAdjustement&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; Blockages&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; PositionalThemes&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; v&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; eval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; alpha, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; beta, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; use_hash &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, mgScore &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, egScore &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; stronger, weaker&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/***********************************************************
    /  Probe the evaluatinon hashtable, unless we call eval()  /
    /  only in order to display detailed result                /
    ***********************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; probeval &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; tteval_probe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;probeval &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INVALID &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; use_hash&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; probeval&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/***********************************************************
    /  Clear all eval data                                     /
    ***********************************************************/&lt;/span&gt;
&amp;nbsp;
    v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;      v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;      v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;     v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* sum the incrementally counted material and pcsq values */&lt;/span&gt;
    mgScore &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    egScore &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* add king&#039;s pawn shield score and evaluate part of piece blockage score
    (the rest of the latter will be done via piece eval) */&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; wKingShield&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bKingShield&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    blockedPieces&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    mgScore &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* tempo bonus */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;TEMPO&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;                  result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;TEMPO&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*******************************************************************
    * Adjusting material value for the various combinations of pieces. *
    * Currently it scores bishop, knight and rook pairs. The first one *
    * gets a bonus, the latter two - a penalty. Please also note that  *
    * adjustements of knight and rook value based on the number of own *
    * pawns on the board are done within the piece-specific routines.  *
    *******************************************************************/&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;BISHOP_PAIR&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;BISHOP_PAIR&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_PAIR&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_PAIR&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_ROOK_PAIR&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_ROOK_PAIR&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; getPawnScore&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*******************************************************************
    *  Evaluate pieces                                                 *
    *******************************************************************/&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 row&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; row &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; row&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 col&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
       S8 sq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PAWN&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// pawns are evaluated separately&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; KNIGHT&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
              EvalKnight&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; BISHOP&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
              EvalBishop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; ROOK&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
               EvalRook&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; QUEEN&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
               EvalQueen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; KING&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
               &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
   *  Merge midgame and endgame score. We interpolate between these    *
   *  two values, using a gamePhase value, based on remaining piece    *
   *  material on both sides. With less pieces, endgame score beco-    *
   *  mes more influential.                                            *
   ********************************************************************/&lt;/span&gt;
&amp;nbsp;
   mgScore &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   egScore &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mgWeight &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; egWeight &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; mgWeight&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mgScore &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; mgWeight&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;egScore &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; egWeight&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
   *  Add phase-independent score components.                          *
   ********************************************************************/&lt;/span&gt;
&amp;nbsp;
   result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
    *  Merge king attack score. We don&#039;t apply this value if there are *
    *  less than two attackers or if the attacker has no queen.        *
    *******************************************************************/&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SafetyTable&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SafetyTable&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
   *  Low material correction - guarding against an illusory material  *
   *  advantage. Full blown program should have more such rules,  but  *
   *  the current set ought to be useful enough. Please note that our  *
   *  code  assumes different material values for bishop and  knight.  *
   *                                                                   *
   *  - a single minor piece cannot win                                *
   *  - two knights cannot checkmate bare king                         *
   *  - bare rook vs minor piece is drawish                            *
   *  - rook and minor vs rook is drawish                              *
   ********************************************************************/&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; stronger &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; WHITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; weaker &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; BLACK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;               &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; stronger &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; BLACK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; weaker &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; WHITE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;weaker&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
           &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
           &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;weaker&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
           &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;weaker&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
           &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
           &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;stronger&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*******************************************************************
    *  Finally return the score relative to the side to move.          *
    *******************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; BLACK &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    tteval_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalKnight&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; att &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mob &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; pos&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, A7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, C7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, H7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, F7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A7&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, A6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, B7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H7&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, H6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, G7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; C3&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, C2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, D4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, E4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_C3_KNIGHT&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
     &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, A2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, C2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, H2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, F2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A2&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, A3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, B2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H2&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, H3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, G2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; C6&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, C7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, D5&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, E5&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_C3_KNIGHT&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************
     *  Material value adjustement based on the no. of own pawns.   *
     *  Knights lose value as pawns disappear.                      *
     ***************************************************************/&lt;/span&gt;
&amp;nbsp;
     v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; knight_adj&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  Collect data about mobility and king attacks. This resembles *
    *  move generation code, except that we are just incrementing   *
    *  the counters instead of adding actual moves.                 *
    ****************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 dir&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; side &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;mob&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
               &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// this knight is attacking zone around enemy king&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  Evaluate mobility. We try to do it in such a way             *
    *  that  zero represents average mobility, but  our             *
    *  formula of doing so is a puer guess.                         *
    ****************************************************************/&lt;/span&gt;
&amp;nbsp;
    v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  Save data about king attacks                                 *
    ****************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalBishop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; att &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mob &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A7&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, B6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H7&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, G6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; B8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, C7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; G8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, F7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A6&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, B5&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A6&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H6&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, G5&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A6&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; F1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KING, G1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;RETURNING_BISHOP&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; C1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KING, B1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;RETURNING_BISHOP&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A2&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, B3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H2&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, G3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; B1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, C2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; G1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, F2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A3&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, B4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A6&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H3&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, G4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A6&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; F8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KING, G8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;RETURNING_BISHOP&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; C8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KING, B8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;RETURNING_BISHOP&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
     &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  Collect data about mobility and king attacks                 *
    ****************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; dir&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;vectors&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
         &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
              pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
              &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                 mob&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                   mob&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalRook&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; att &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mob &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; ownBlockingPawns &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; oppBlockingPawns &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; stepFwd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nextSq&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************
    *  Material value adjustement based on the no. of own pawns.   *
    *  Rooks gain value as pawns disappear.                        *
    ***************************************************************/&lt;/span&gt;
&amp;nbsp;
    v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rook_adj&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PieceCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************
    *  This is an ugly hack to detect open files. Merging it with  *
    *  mobility  eval would have been better, but less  readable,  *
    *  and this is educational program fter all.                   *
    /**************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; stepFwd &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; NORTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; stepFwd &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SOUTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; stepFwd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
               ownBlockingPawns&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
               oppBlockingPawns&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; stepFwd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  Evaluate open and half-open files. We merge this bonus with  *
    *  mobility  score.                                             *
    /***************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;ownBlockingPawns &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;oppBlockingPawns &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ROOK_OPEN&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ROOK_OPEN&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ROOK_HALF&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ROOK_HALF&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  Collect data about mobility and king attacks                 *
    ****************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; dir&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; dir&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;vectors&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; dir&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
         &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
              pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
              &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                 mob&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                   mob&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalQueen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;gamePhase&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; att &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mob &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  A queen should not be developed too early                    *
    ****************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; ROW_2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KNIGHT, B1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, BISHOP, C1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, BISHOP, F1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KNIGHT, G1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; BLACK &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; ROW_7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KNIGHT, B8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, BISHOP, C8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, BISHOP, F8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KNIGHT, G8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
    *  Collect data about mobility and king attacks                 *
    ****************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; dir&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;vectors&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
         &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
              pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
              &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                 mob&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                   mob&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                   &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mob&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attCnt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;attWeight&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;att&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; wKingShield&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* king on the kingside */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; COL&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; COL_E &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, F2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, F3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, G2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, G3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, H2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, H3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;coMULTI&quot;&gt;/* king on the queenside */&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; COL&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; COL_D &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, A2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, A3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, B2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, B3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, C2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, C3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bKingShield&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;coMULTI&quot;&gt;/* king on the kingside */&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; COL&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; COL_E &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, F7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, F6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, G7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, G6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, H7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, H6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;coMULTI&quot;&gt;/* king on the queenside */&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; COL&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; COL_D &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, A7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, A6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, B7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, B6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, C7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, C6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/******************************************************************************
*                            Pawn structure evaluaton                         *
******************************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; getPawnScore&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/**************************************************************************
    *  This function wraps hashing mechanism around evalPawnStructure().      *
    *  Please note  that since we use the pawn hashtable, evalPawnStructure() *
    *  must not take into account the piece position.  In a more elaborate    *
    *  program, pawn hashtable would contain only the characteristics of pawn *
    *  structure,  and scoring them in conjunction with the piece position    *
    *  would have been done elsewhere.                                        *
    **************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; probeval &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ttpawn_probe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;probeval &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INVALID&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; probeval&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; evalPawnStructure&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    ttpawn_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; evalPawnStructure&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 row &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; row &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; row&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 col &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; col&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
       S8 sq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SET_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row, col&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; EvalPawn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;                      result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; EvalPawn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; EvalPawn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; flagIsPassed &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// we will be trying to disprove that&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; flagIsWeak &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;// we will be trying to disprove that&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; flagIsOpposed &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; stepFwd, stepBck&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; stepFwd &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; NORTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; stepFwd &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SOUTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; stepBck &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SOUTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; stepBck &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; NORTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    S8 nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; stepFwd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************************************
    *   We have only very basic data structures that do not update informa-  *
    *   tion about pawns incrementally, so we have to calculate everything   *
    *   here.  The loop below detects doubled pawns, passed pawns and sets   *
    *   a flag on finding that our pawn is opposed by enemy pawn.            *
    *************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// either opposed by enemy pawn or doubled&lt;/span&gt;
            flagIsPassed &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;       &lt;span class=&quot;co1&quot;&gt;// doubled pawn penalty&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
                flagIsOpposed &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// flag our pawn as opposed&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; WEST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side, PAWN, nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; WEST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            flagIsPassed &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; EAST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;side, PAWN, nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; EAST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            flagIsPassed &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; stepFwd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************************************
    *   Another loop, going backwards and checking whether pawn has support. *
    *   Here we can at least break out of it for speed optimization.         *
    *************************************************************************/&lt;/span&gt;
&amp;nbsp;
    nextSq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; WEST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side, PAWN, nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; WEST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            flagIsWeak &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; EAST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side, PAWN, nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; EAST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            flagIsWeak &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        nextSq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; stepBck&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************************************
    *  Evaluate passed pawns, scoring them higher if they are protected      *
    *  or if their advance is supported by friendly pawns                    *
    *************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; flagIsPassed &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPawnSupported&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;protected_passer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;                             result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;passed_pawn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************************************
    *  Evaluate weak pawns, increasing the penalty if they are situated      *
    *  on a half-open file                                                   *
    *************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; flagIsWeak &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;weak_pawn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;flagIsOpposed&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            result &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isPawnSupported&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; step&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; step &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SOUTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; step &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; NORTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;WEST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side,PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; WEST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;EAST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side,PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; EAST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;step&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;WEST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side,PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; step&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;WEST &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;step&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;EAST&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side,PAWN, sq &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; step&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;EAST &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/******************************************************************************
*                             Pattern detection                               *
******************************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; blockedPieces&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// central pawn blocked, bishop hard to develop&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, BISHOP, C1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, D2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D3&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BLOCK_CENTRAL_PAWN&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, BISHOP, F1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;  isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, E2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;E3&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BLOCK_CENTRAL_PAWN&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, BISHOP, C8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;  isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, D7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D6&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BLOCK_CENTRAL_PAWN&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, BISHOP, F8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, E7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;E6&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; COLOR_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_BLOCK_CENTRAL_PAWN&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// uncastled king blocking own rook&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KING, F1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KING, G1 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, ROOK, H1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, ROOK, G1 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KING_BLOCKS_ROOK&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KING, C1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, KING, B1 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, ROOK, A1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, ROOK, B1 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KING_BLOCKS_ROOK&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KING, F8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KING, G8 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, ROOK, H8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, ROOK, G8 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KING_BLOCKS_ROOK&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KING, C8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, KING, B8 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, ROOK, A8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, ROOK, B8 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;P_KING_BLOCKS_ROOK&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 color, U8 piece, S8 sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; piece&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; color&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************************************
*                             Printing eval results                                    *
***************************************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; printEval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;------------------------------------------&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Total value (for side to move): %d &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, eval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INF,INF, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Material balance    : %d &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Material adjustement: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, v.&lt;span class=&quot;me1&quot;&gt;MaterialAdjustement&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Mg Piece/square tables : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;PcsqMg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Eg Piece/square tables : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;PcsqEg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Mg Mobility            : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Eg Mobility            : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;mgMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, v.&lt;span class=&quot;me1&quot;&gt;egMob&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Pawn structure      : %d &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, evalPawnStructure&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Blockages           : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, v.&lt;span class=&quot;me1&quot;&gt;Blockages&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Positional themes   : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, v.&lt;span class=&quot;me1&quot;&gt;PositionalThemes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;King Shield         : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, v.&lt;span class=&quot;me1&quot;&gt;kingShield&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Tempo: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d&amp;quot;&lt;/span&gt;, e.&lt;span class=&quot;me1&quot;&gt;TEMPO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;TEMPO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;------------------------------------------&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; printEvalFactor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; wh, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bl&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;white %4d, black %4d, total: %4d &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, wh, bl, wh &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; bl&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:6:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:6 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_eval&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_eval&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_eval includeBody-CPW-Engine_eval includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_eval&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_eval&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 26, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Evaluation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Evaluation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Evaluation+function&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Evaluation function&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 24, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/King+Safety&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;King Safety&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 14, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Lazy+Evaluation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Lazy Evaluation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 1, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mobility&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mobility&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Structure&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Structure&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 2, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_eval_h</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_eval_h</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_eval_h</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_eval_h</comments>
      <pubDate>Tue, 30 Dec 2014 18:56:27 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * eval.h&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:1:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;eval.h&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:1 --&gt;eval.h&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/* king safety*/&amp;lt;br/&amp;gt;int wKingShield();&amp;lt;br/&amp;gt;int bKingShield();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* pawn structure */&amp;lt;br/&amp;gt;int getPawnScore();&amp;lt;br/&amp;gt;int evalPawnStructure();&amp;lt;br/&amp;gt;int EvalPawn(S8 sq, S8 side);&amp;lt;br/&amp;gt;void EvalKnight(S8 sq, S8 side);&amp;lt;br/&amp;gt;void EvalBishop(S8 sq, S8 side);&amp;lt;br/&amp;gt;void EvalRook(S8 sq, S8 side);&amp;lt;br/&amp;gt;void EvalQueen(S8 sq, S8 side);&amp;lt;br/&amp;gt;int isPawnSupported(S8 sq, S8 side);&amp;lt;br/&amp;gt;int isWPSupported(S8 sq);&amp;lt;br/&amp;gt;int isBPSupported(S8 sq);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* pattern detection */&amp;lt;br/&amp;gt;void blockedPieces();&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* king safety*/&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; wKingShield&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bKingShield&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* pawn structure */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; getPawnScore&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; evalPawnStructure&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; EvalPawn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalKnight&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalBishop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalRook&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; EvalQueen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isPawnSupported&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, S8 side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isWPSupported&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isBPSupported&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* pattern detection */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; blockedPieces&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_eval_init</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_eval_init</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_eval_init</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_eval_init</comments>
      <pubDate>Tue, 30 Dec 2014 18:51:28 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * eval_init&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Initialization of the evaluation function. This is used once when the program is started and the values are not changed afterwards. Program supports also reading most of the values from a file. Later version might read piece/square tables in the same way, but that is not strictly necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:1:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Code&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:1 --&gt;Code&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;0x88_math.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;s_eval_data e;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;// tables used for translating piece/square tables to internal 0x88 representation&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int index_white[64] = {&amp;lt;br/&amp;gt;    A8, B8, C8, D8, E8, F8, G8, H8,&amp;lt;br/&amp;gt;    A7, B7, C7, D7, E7, F7, G7, H7,&amp;lt;br/&amp;gt;    A6, B6, C6, D6, E6, F6, G6, H6,&amp;lt;br/&amp;gt;    A5, B5, C5, D5, E5, F5, G5, H5,&amp;lt;br/&amp;gt;    A4, B4, C4, D4, E4, F4, G4, H4,&amp;lt;br/&amp;gt;    A3, B3, C3, D3, E3, F3, G3, H3,&amp;lt;br/&amp;gt;    A2, B2, C2, D2, E2, F2, G2, H2,&amp;lt;br/&amp;gt;    A1, B1, C1, D1, E1, F1, G1, H1&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int index_black[64] = {&amp;lt;br/&amp;gt;    A1, B1, C1, D1, E1, F1, G1, H1,&amp;lt;br/&amp;gt;    A2, B2, C2, D2, E2, F2, G2, H2,&amp;lt;br/&amp;gt;    A3, B3, C3, D3, E3, F3, G3, H3,&amp;lt;br/&amp;gt;    A4, B4, C4, D4, E4, F4, G4, H4,&amp;lt;br/&amp;gt;    A5, B5, C5, D5, E5, F5, G5, H5,&amp;lt;br/&amp;gt;    A6, B6, C6, D6, E6, F6, G6, H6,&amp;lt;br/&amp;gt;    A7, B7, C7, D7, E7, F7, G7, H7,&amp;lt;br/&amp;gt;    A8, B8, C8, D8, E8, F8, G8, H8&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int dist_bonus[64][64];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/*****************************************************************&amp;lt;br/&amp;gt;*                           PAWN PCSQ                            *&amp;lt;br/&amp;gt;*                                                                *&amp;lt;br/&amp;gt;*  Unlike TSCP, CPW generally doesn&#039;t want to advance its pawns  *&amp;lt;br/&amp;gt;*  just for the fun of it. It takes into account the following:  *&amp;lt;br/&amp;gt;*                                                                *&amp;lt;br/&amp;gt;*  - file-dependent component, encouraging program to capture    *&amp;lt;br/&amp;gt;*    towards the center                                          *&amp;lt;br/&amp;gt;*  - small bonus for staying on the 2nd rank                     *&amp;lt;br/&amp;gt;*  - small bonus for standing on a3/h3                           *&amp;lt;br/&amp;gt;*  - penalty for d/e pawns on their initial squares              *&amp;lt;br/&amp;gt;*  - bonus for occupying the center                              *&amp;lt;br/&amp;gt;*****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int pawn_pcsq_mg[64] = {&amp;lt;br/&amp;gt;     0,   0,   0,   0,   0,   0,   0,   0,&amp;lt;br/&amp;gt;    -6,  -4,   1,   1,   1,   1,  -4,  -6,&amp;lt;br/&amp;gt;    -6,  -4,   1,   2,   2,   1,  -4,  -6,&amp;lt;br/&amp;gt;    -6,  -4,   2,   8,   8,   2,  -4,  -6,&amp;lt;br/&amp;gt;    -6,  -4,   5,  10,  10,   5,  -4,  -6,&amp;lt;br/&amp;gt;    -4,  -4,   1,   5,   5,   1,  -4,  -4,&amp;lt;br/&amp;gt;    -6,  -4,   1, -24,  -24,  1,  -4,  -6,&amp;lt;br/&amp;gt;     0,   0,   0,   0,   0,   0,   0,   0&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int pawn_pcsq_eg[64] = {&amp;lt;br/&amp;gt;     0,   0,   0,   0,   0,   0,   0,   0,&amp;lt;br/&amp;gt;    -6,  -4,   1,   1,   1,   1,  -4,  -6,&amp;lt;br/&amp;gt;    -6,  -4,   1,   2,   2,   1,  -4,  -6,&amp;lt;br/&amp;gt;    -6,  -4,   2,   8,   8,   2,  -4,  -6,&amp;lt;br/&amp;gt;    -6,  -4,   5,  10,  10,   5,  -4,  -6,&amp;lt;br/&amp;gt;    -4,  -4,   1,   5,   5,   1,  -4,  -4,&amp;lt;br/&amp;gt;    -6,  -4,   1, -24,  -24,  1,  -4,  -6,&amp;lt;br/&amp;gt;     0,   0,   0,   0,   0,   0,   0,   0&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/****************************************************************&amp;lt;br/&amp;gt;*    KNIGHT PCSQ                                                *&amp;lt;br/&amp;gt;*                                                               *&amp;lt;br/&amp;gt;*   - centralization bonus                                      *&amp;lt;br/&amp;gt;*   - penalty for not being developed                           *&amp;lt;br/&amp;gt;****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int knight_pcsq_mg[64] = {&amp;lt;br/&amp;gt;    -8,  -8,  -8,  -8,  -8,  -8,  -8,  -8,&amp;lt;br/&amp;gt;    -8,   0,   0,   0,   0,   0,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   4,   4,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   8,   8,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   8,   8,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   4,   4,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   1,   2,   2,   1,   0,  -8,&amp;lt;br/&amp;gt;    -8, -12,  -8,  -8,  -8,  -8, -12,  -8&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int knight_pcsq_eg[64] = {&amp;lt;br/&amp;gt;    -8,  -8,  -8,  -8,  -8,  -8,  -8,  -8,&amp;lt;br/&amp;gt;    -8,   0,   0,   0,   0,   0,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   4,   4,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   8,   8,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   8,   8,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   4,   4,   4,   4,   0,  -8,&amp;lt;br/&amp;gt;    -8,   0,   1,   2,   2,   1,   0,  -8,&amp;lt;br/&amp;gt;    -8, -12,  -8,  -8,  -8,  -8, -12,  -8&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/****************************************************************&amp;lt;br/&amp;gt;*                BISHOP PCSQ                                    *&amp;lt;br/&amp;gt;*                                                               *&amp;lt;br/&amp;gt;*   - centralization bonus, smaller than for knight             *&amp;lt;br/&amp;gt;*   - penalty for not being developed                           *&amp;lt;br/&amp;gt;*   - good squares on the own half of the board                 *&amp;lt;br/&amp;gt;****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int bishop_pcsq_mg[64] = {&amp;lt;br/&amp;gt;    -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,&amp;lt;br/&amp;gt;    -4,   0,   0,   0,   0,   0,   0,  -4,&amp;lt;br/&amp;gt;    -4,   0,   2,   4,   4,   2,   0,  -4,&amp;lt;br/&amp;gt;    -4,   0,   4,   6,   6,   4,   0,  -4,&amp;lt;br/&amp;gt;    -4,   0,   4,   6,   6,   4,   0,  -4,&amp;lt;br/&amp;gt;    -4,   1,   2,   4,   4,   2,   1,  -4,&amp;lt;br/&amp;gt;    -4,   2,   1,   1,   1,   1,   2,  -4,&amp;lt;br/&amp;gt;    -4,  -4, -12,  -4,  -4, -12,  -4,  -4&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int bishop_pcsq_eg[64] = {&amp;lt;br/&amp;gt;    -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,&amp;lt;br/&amp;gt;    -4,   0,   0,   0,   0,   0,   0,  -4,&amp;lt;br/&amp;gt;    -4,   0,   2,   4,   4,   2,   0,  -4,&amp;lt;br/&amp;gt;    -4,   0,   4,   6,   6,   4,   0,  -4,&amp;lt;br/&amp;gt;    -4,   0,   4,   6,   6,   4,   0,  -4,&amp;lt;br/&amp;gt;    -4,   1,   2,   4,   4,   2,   1,  -4,&amp;lt;br/&amp;gt;    -4,   2,   1,   1,   1,   1,   2,  -4,&amp;lt;br/&amp;gt;    -4,  -4, -12,  -4,  -4, -12,  -4,  -4&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/****************************************************************&amp;lt;br/&amp;gt;*                        ROOK PCSQ                              *&amp;lt;br/&amp;gt;*                                                               *&amp;lt;br/&amp;gt;*    - bonus for 7th and 8th ranks                              *&amp;lt;br/&amp;gt;*    - penalty for a/h columns                                  *&amp;lt;br/&amp;gt;*    - small centralization bonus                               *&amp;lt;br/&amp;gt;*****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int rook_pcsq_mg[64] = {&amp;lt;br/&amp;gt;     5,   5,   5,   5,   5,   5,   5,   5,&amp;lt;br/&amp;gt;    20,  20,  20,  20,  20,  20,  20,  20,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;     0,   0,   0,   2,   2,   0,   0,   0&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int rook_pcsq_eg[64] = {&amp;lt;br/&amp;gt;     5,   5,   5,   5,   5,   5,   5,   5,&amp;lt;br/&amp;gt;    20,  20,  20,  20,  20,  20,  20,  20,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;    -5,   0,   0,   0,   0,   0,   0,  -5,&amp;lt;br/&amp;gt;     0,   0,   0,   2,   2,   0,   0,   0&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/***************************************************************************&amp;lt;br/&amp;gt;*                     QUEEN PCSQ                                           *&amp;lt;br/&amp;gt;*                                                                          *&amp;lt;br/&amp;gt;* - small bonus for centralization in the endgame                          *&amp;lt;br/&amp;gt;* - penalty for staying on the 1st rank, between rooks in the midgame      *&amp;lt;br/&amp;gt;***************************************************************************/&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;int queen_pcsq_mg[64] = {&amp;lt;br/&amp;gt;    0, 0, 0, 0, 0, 0, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 1, 1, 1, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 2, 2, 1, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 2, 3, 3, 2, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 2, 3, 3, 2, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 2, 2, 1, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 1, 1, 1, 0, 0,&amp;lt;br/&amp;gt;    -5, -5, -5, -5, -5, -5, -5, -5&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int queen_pcsq_eg[64] = {&amp;lt;br/&amp;gt;    0, 0, 0, 0, 0, 0, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 1, 1, 1, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 2, 2, 1, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 2, 3, 3, 2, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 2, 3, 3, 2, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 2, 2, 1, 0, 0,&amp;lt;br/&amp;gt;    0, 0, 1, 1, 1, 1, 0, 0,&amp;lt;br/&amp;gt;    -5, -5, -5, -5, -5, -5, -5, -5&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int king_pcsq_mg[64] = {&amp;lt;br/&amp;gt;    -40, -30, -50, -70, -70, -50, -30, -40,&amp;lt;br/&amp;gt;    -30, -20, -40, -60, -60, -40, -20, -30,&amp;lt;br/&amp;gt;    -20, -10, -30, -50, -50, -30, -10, -20,&amp;lt;br/&amp;gt;    -10,   0, -20, -40, -40, -20,   0, -10,&amp;lt;br/&amp;gt;      0,  10, -10, -30, -30, -10,  10,   0,&amp;lt;br/&amp;gt;     10,  20,   0, -20, -20,   0,  20,  10,&amp;lt;br/&amp;gt;     30,  40,  20,   0,   0,  20,  40,  30,&amp;lt;br/&amp;gt;     40,  50,  30,  10,  10,  30,  50,  40&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int king_pcsq_eg[64] = {&amp;lt;br/&amp;gt;    -72, -48, -36, -24, -24, -36, -48, -72,&amp;lt;br/&amp;gt;    -48, -24, -12,   0,   0, -12, -24, -48,&amp;lt;br/&amp;gt;    -36, -12,   0,  12,  12,   0, -12, -36,&amp;lt;br/&amp;gt;    -24,   0,  12,  24,  24,  12,   0, -24,&amp;lt;br/&amp;gt;    -24,   0,  12,  24,  24,  12,   0, -24,&amp;lt;br/&amp;gt;    -36, -12,   0,  12,  12,   0, -12, -36,&amp;lt;br/&amp;gt;    -48, -24, -12,   0,   0, -12, -24, -48,&amp;lt;br/&amp;gt;    -72, -48, -36, -24, -24, -36, -48, -72&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/*****************************************************************&amp;lt;br/&amp;gt;*                     WEAK PAWNS PCSQ                            *&amp;lt;br/&amp;gt;*                                                                *&amp;lt;br/&amp;gt;*  Current version of CPW-engine does not differentiate between  *&amp;lt;br/&amp;gt;*  isolated  and  backward pawns, using one  generic  cathegory  *&amp;lt;br/&amp;gt;*  of  weak pawns. The penalty is bigger in the center, on  the  *&amp;lt;br/&amp;gt;*  assumption  that  weak  central pawns can be  attacked  from  *&amp;lt;br/&amp;gt;*  many  directions. If the penalty seems too low, please  note  *&amp;lt;br/&amp;gt;*  that being on a semi-open file will come into equation, too.  *&amp;lt;br/&amp;gt;*****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int weak_pawn_pcsq[64] = {&amp;lt;br/&amp;gt;      0,   0,   0,   0,   0,   0,   0,   0,&amp;lt;br/&amp;gt;    -10, -12, -14, -16, -16, -14, -12, -10,&amp;lt;br/&amp;gt;    -10, -12, -14, -16, -16, -14, -12, -10,&amp;lt;br/&amp;gt;    -10, -12, -14, -16, -16, -14, -12, -10,&amp;lt;br/&amp;gt;    -10, -12, -14, -16, -16, -14, -12, -10,&amp;lt;br/&amp;gt;     -8, -12, -14, -16, -16, -14, -12, -10,&amp;lt;br/&amp;gt;     -8, -12, -14, -16, -16, -14, -12, -10,&amp;lt;br/&amp;gt;      0,   0,   0,   0,   0,   0,   0,   0&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int passed_pawn_pcsq[64] = {&amp;lt;br/&amp;gt;      0,   0,   0,   0,   0,   0,   0,   0,&amp;lt;br/&amp;gt;    100, 100, 100, 100, 100, 100, 100, 100,&amp;lt;br/&amp;gt;     80,  80,  80,  80,  80,  80,  80,  80,&amp;lt;br/&amp;gt;     60,  60,  60,  60,  60,  60,  60,  60,&amp;lt;br/&amp;gt;     40,  40,  40,  40,  40,  40,  40,  40,&amp;lt;br/&amp;gt;     20,  20,  20,  20,  20,  20,  20,  20,&amp;lt;br/&amp;gt;     20,  20,  20,  20,  20,  20,  20,  20,&amp;lt;br/&amp;gt;      0,   0,   0,   0,   0,   0,   0,   0&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void setDefaultEval() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    setBasicValues();&amp;lt;br/&amp;gt;    setSquaresNearKing();&amp;lt;br/&amp;gt;    setPcsq();&amp;lt;br/&amp;gt;    readIniFile();&amp;lt;br/&amp;gt;    correctValues();&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void setBasicValues() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /********************************************************************************&amp;lt;br/&amp;gt;    *  We use material values by IM Larry Kaufman with additional + 10 for a Bishop *&amp;lt;br/&amp;gt;    *  and only +30 for a Bishop pair                                                 *&amp;lt;br/&amp;gt;    ********************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    e.PIECE_VALUE[KING]   = 0;&amp;lt;br/&amp;gt;    e.PIECE_VALUE[QUEEN]  = 975;&amp;lt;br/&amp;gt;    e.PIECE_VALUE[ROOK]   = 500;&amp;lt;br/&amp;gt;    e.PIECE_VALUE[BISHOP] = 335;&amp;lt;br/&amp;gt;    e.PIECE_VALUE[KNIGHT] = 325;&amp;lt;br/&amp;gt;    e.PIECE_VALUE[PAWN]   = 100;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    e.BISHOP_PAIR   = 30;&amp;lt;br/&amp;gt;    e.P_KNIGHT_PAIR = 8;&amp;lt;br/&amp;gt;    e.P_ROOK_PAIR   = 16;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*************************************************&amp;lt;br/&amp;gt;    *  Calculate  the  value  of  piece  material    *&amp;lt;br/&amp;gt;    *  at  the  beginning of  the  game,  which  is  *&amp;lt;br/&amp;gt;    *  used for scaling the king tropism evaluation. *&amp;lt;br/&amp;gt;    *  This  way we don&#039;t have to update a constant  *&amp;lt;br/&amp;gt;    *  every time we change material values.         *&amp;lt;br/&amp;gt;    *************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    e.START_MATERIAL = e.PIECE_VALUE[QUEEN]&amp;lt;br/&amp;gt;        + 2 * e.PIECE_VALUE[ROOK]&amp;lt;br/&amp;gt;        + 2 * e.PIECE_VALUE[BISHOP]&amp;lt;br/&amp;gt;        + 2 * e.PIECE_VALUE[KNIGHT];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*************************************************&amp;lt;br/&amp;gt;    * Values used for sorting captures are the same  *&amp;lt;br/&amp;gt;    * as normal piece values, except for a king.     *&amp;lt;br/&amp;gt;    *************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; 6; ++i) {&amp;lt;br/&amp;gt;        e.SORT_VALUE[i] = e.PIECE_VALUE[i];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    e.SORT_VALUE[KING] = SORT_KING;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* trapped and blocked pieces */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    e.P_KING_BLOCKS_ROOK   = 24;&amp;lt;br/&amp;gt;    e.P_BLOCK_CENTRAL_PAWN = 24;&amp;lt;br/&amp;gt;    e.P_BISHOP_TRAPPED_A7  = 150;&amp;lt;br/&amp;gt;    e.P_BISHOP_TRAPPED_A6  = 50;&amp;lt;br/&amp;gt;    e.P_KNIGHT_TRAPPED_A8  = 150;&amp;lt;br/&amp;gt;    e.P_KNIGHT_TRAPPED_A7  = 100;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* minor penalties */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    e.P_C3_KNIGHT = 5;&amp;lt;br/&amp;gt;    e.P_NO_FIANCHETTO = 4;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* king&#039;s defence */&amp;lt;br/&amp;gt;    e.SHIELD_1 = 10;&amp;lt;br/&amp;gt;    e.SHIELD_2 = 5;&amp;lt;br/&amp;gt;    e.P_NO_SHIELD = 10;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* minor bonuses */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    e.ROOK_OPEN = 10;&amp;lt;br/&amp;gt;    e.ROOK_HALF = 5;&amp;lt;br/&amp;gt;    e.RETURNING_BISHOP = 20;&amp;lt;br/&amp;gt;    e.FIANCHETTO = 4;&amp;lt;br/&amp;gt;    e.TEMPO = 10;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    e.ENDGAME_MAT = 1300;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void setSquaresNearKing() {&amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; 128; ++i)&amp;lt;br/&amp;gt;        for (int j = 0; j &amp;amp;lt; 128; ++j)&amp;lt;br/&amp;gt;        {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            e.sqNearK[WHITE][i][j] = 0;&amp;lt;br/&amp;gt;            e.sqNearK[BLACK][i][j] = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            if (IS_SQ(i) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                IS_SQ(j)) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                // squares constituting the ring around both kings&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                if (j == i + NORTH || j == i + SOUTH ||&amp;lt;br/&amp;gt;                    j == i + EAST || j == i + WEST ||&amp;lt;br/&amp;gt;                    j == i + NW || j == i + NE ||&amp;lt;br/&amp;gt;                    j == i + SW || j == i + SE) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                    e.sqNearK[WHITE][i][j] = 1;&amp;lt;br/&amp;gt;                    e.sqNearK[BLACK][i][j] = 1;&amp;lt;br/&amp;gt;                }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                /* squares in front of the white king ring */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                if (j == i + NORTH + NORTH ||&amp;lt;br/&amp;gt;                    j == i + NORTH + NE ||&amp;lt;br/&amp;gt;                    j == i + NORTH + NW)&amp;lt;br/&amp;gt;                    e.sqNearK[WHITE][i][j] = 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                // squares in front og the black king ring&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                if (j == i + SOUTH + SOUTH ||&amp;lt;br/&amp;gt;                    j == i + SOUTH + SE ||&amp;lt;br/&amp;gt;                    j == i + SOUTH + SW)&amp;lt;br/&amp;gt;                    e.sqNearK[WHITE][i][j] = 1;&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void setPcsq() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; 64; ++i) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        e.weak_pawn[WHITE][index_white[i]] = weak_pawn_pcsq[i];&amp;lt;br/&amp;gt;        e.weak_pawn[BLACK][index_black[i]] = weak_pawn_pcsq[i];&amp;lt;br/&amp;gt;        e.passed_pawn[WHITE][index_white[i]] = passed_pawn_pcsq[i];&amp;lt;br/&amp;gt;        e.passed_pawn[BLACK][index_black[i]] = passed_pawn_pcsq[i];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /* protected passers are considered slightly stronger&amp;lt;br/&amp;gt;        than ordinary passed pawns */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        e.protected_passer[WHITE][index_white[i]] = (passed_pawn_pcsq[i] * 10) / 8;&amp;lt;br/&amp;gt;        e.protected_passer[BLACK][index_black[i]] = (passed_pawn_pcsq[i] * 10) / 8;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /* now set the piece/square tables for each color and piece type */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        e.mgPst[PAWN][WHITE][index_white[i]] = pawn_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[PAWN][BLACK][index_black[i]] = pawn_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[KNIGHT][WHITE][index_white[i]] = knight_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[KNIGHT][BLACK][index_black[i]] = knight_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[BISHOP][WHITE][index_white[i]] = bishop_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[BISHOP][BLACK][index_black[i]] = bishop_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[ROOK][WHITE][index_white[i]] = rook_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[ROOK][BLACK][index_black[i]] = rook_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[QUEEN][WHITE][index_white[i]] = queen_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[QUEEN][BLACK][index_black[i]] = queen_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[KING][WHITE][index_white[i]] = king_pcsq_mg[i];&amp;lt;br/&amp;gt;        e.mgPst[KING][BLACK][index_black[i]] = king_pcsq_mg[i];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        e.egPst[PAWN][WHITE][index_white[i]] = pawn_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[PAWN][BLACK][index_black[i]] = pawn_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[KNIGHT][WHITE][index_white[i]] = knight_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[KNIGHT][BLACK][index_black[i]] = knight_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[BISHOP][WHITE][index_white[i]] = bishop_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[BISHOP][BLACK][index_black[i]] = bishop_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[ROOK][WHITE][index_white[i]] = rook_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[ROOK][BLACK][index_black[i]] = rook_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[QUEEN][WHITE][index_white[i]] = queen_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[QUEEN][BLACK][index_black[i]] = queen_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[KING][WHITE][index_white[i]] = king_pcsq_eg[i];&amp;lt;br/&amp;gt;        e.egPst[KING][BLACK][index_black[i]] = king_pcsq_eg[i];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* This function is meant to be used in conjunction with the *.ini file.&amp;lt;br/&amp;gt;Its aim is to make sure that all the assumptions made within the program&amp;lt;br/&amp;gt;are met.  */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void correctValues() {&amp;lt;br/&amp;gt;    if (e.PIECE_VALUE[BISHOP] == e.PIECE_VALUE[KNIGHT])&amp;lt;br/&amp;gt;        ++e.PIECE_VALUE[BISHOP];&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void readIniFile() {&amp;lt;br/&amp;gt;    FILE *cpw_init;&amp;lt;br/&amp;gt;    char line[256];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* if the cpw.ini file does not exist, then exit */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ((cpw_init = fopen(&amp;amp;quot;cpw.ini&amp;amp;quot;, &amp;amp;quot;r&amp;amp;quot;)) == NULL) {&amp;lt;br/&amp;gt;        printf(&amp;amp;quot;Cannot open cpw.ini, default settings will be used \n&amp;amp;quot;);&amp;lt;br/&amp;gt;        return;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* process cpw.ini file line by line */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    while (fgets(line, 250, cpw_init)) {&amp;lt;br/&amp;gt;        if (line[0] == &#039;;&#039;) continue; // don&#039;t process comment lines&amp;lt;br/&amp;gt;        processIniString(line);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void processIniString(char line[250]) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* piece values */&amp;lt;br/&amp;gt;    if (!strncmp(line, &amp;amp;quot;PAWN_VALUE&amp;amp;quot;, 10))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PAWN_VALUE %d&amp;amp;quot;, &amp;amp;amp;e.PIECE_VALUE[PAWN]);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;KNIGHT_VALUE&amp;amp;quot;, 12))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;KNIGHT_VALUE %d&amp;amp;quot;, &amp;amp;amp;e.PIECE_VALUE[KNIGHT]);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;BISHOP_VALUE&amp;amp;quot;, 12))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;BISHOP_VALUE %d&amp;amp;quot;, &amp;amp;amp;e.PIECE_VALUE[BISHOP]);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;ROOK_VALUE&amp;amp;quot;, 10))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;ROOK_VALUE %d&amp;amp;quot;, &amp;amp;amp;e.PIECE_VALUE[ROOK]);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;QUEEN_VALUE&amp;amp;quot;, 11))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;QUEEN_VALUE %d&amp;amp;quot;, &amp;amp;amp;e.PIECE_VALUE[QUEEN]);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* piece pairs */&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;BISHOP_PAIR&amp;amp;quot;, 11))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;BISHOP_PAIR %d&amp;amp;quot;, &amp;amp;amp;e.BISHOP_PAIR);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_KNIGHT_PAIR&amp;amp;quot;, 19))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_KNIGHT_PAIR %d&amp;amp;quot;, &amp;amp;amp;e.P_KNIGHT_PAIR);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_ROOK_PAIR&amp;amp;quot;, 17))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_ROOK_PAIR %d&amp;amp;quot;, &amp;amp;amp;e.P_KNIGHT_PAIR);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* pawn shield*/&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;SHIELD_1&amp;amp;quot;, 8))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;SHIELD_1 %d&amp;amp;quot;, &amp;amp;amp;e.SHIELD_1);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;SHIELD_2&amp;amp;quot;, 8))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;SHIELD_2 %d&amp;amp;quot;, &amp;amp;amp;e.SHIELD_2);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_NO_SHIELD&amp;amp;quot;, 17))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_NO_SHIELD %d&amp;amp;quot;, &amp;amp;amp;e.P_NO_SHIELD);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* major penalties */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_BISHOP_TRAPPED_A7&amp;amp;quot;, 25))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_BISHOP_TRAPPED_A7 %d&amp;amp;quot;, &amp;amp;amp;e.P_BISHOP_TRAPPED_A7);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_BISHOP_TRAPPED_A6&amp;amp;quot;, 25))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_BISHOP_TRAPPED_A6 %d&amp;amp;quot;, &amp;amp;amp;e.P_BISHOP_TRAPPED_A6);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_KNIGHT_TRAPPED_A8&amp;amp;quot;, 25))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_KNIGHT_TRAPPED_A8 %d&amp;amp;quot;, &amp;amp;amp;e.P_KNIGHT_TRAPPED_A8);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_KNIGHT_TRAPPED_A7&amp;amp;quot;, 25))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_KNIGHT_TRAPPED_A7 %d&amp;amp;quot;, &amp;amp;amp;e.P_KNIGHT_TRAPPED_A7);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_KING_BLOCKS_ROOK&amp;amp;quot;, 24))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_KNIGHT_TRAPPED_A7 %d&amp;amp;quot;, &amp;amp;amp;e.P_KING_BLOCKS_ROOK);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_BLOCKED_CENTRAL_PAWN&amp;amp;quot;, 28))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_BLOCKED_CENTRAL_PAWN %d&amp;amp;quot;, &amp;amp;amp;e.P_BLOCK_CENTRAL_PAWN);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* minor penalties */&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_KNIGHT_BLOCKS_C&amp;amp;quot;, 23))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_KNIGHT_BLOCKS_C %d&amp;amp;quot;, &amp;amp;amp;e.P_C3_KNIGHT);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;PENALTY_NO_FIANCHETTO&amp;amp;quot;, 21))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;PENALTY_NO_FIANCHETTO %d&amp;amp;quot;, &amp;amp;amp;e.P_NO_FIANCHETTO);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* minor positional bonuses */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;ROOK_OPEN&amp;amp;quot;, 9))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;ROOK_OPEN %d&amp;amp;quot;, &amp;amp;amp;e.ROOK_OPEN);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;ROOK_HALF_OPEN&amp;amp;quot;, 14))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;ROOK_HALF_OPEN %d&amp;amp;quot;, &amp;amp;amp;e.ROOK_HALF);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;FIANCHETTO&amp;amp;quot;, 10))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;FIANCHETTO %d&amp;amp;quot;, &amp;amp;amp;e.FIANCHETTO);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;RETURNING_BISHOP&amp;amp;quot;, 16))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;RETURNING_BISHOP %d&amp;amp;quot;, &amp;amp;amp;e.RETURNING_BISHOP);&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;TEMPO&amp;amp;quot;, 5))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;TEMPO %d&amp;amp;quot;, &amp;amp;amp;e.TEMPO);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* variables deciding about inner workings of evaluation function */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    else if (!strncmp(line, &amp;amp;quot;ENDGAME_MATERIAL&amp;amp;quot;, 16))&amp;lt;br/&amp;gt;        sscanf(line, &amp;amp;quot;ENDGAME_MATERIAL %d&amp;amp;quot;, &amp;amp;amp;e.ENDGAME_MAT);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;0x88_math.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
s_eval_data e&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// tables used for translating piece/square tables to internal 0x88 representation&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    A8, B8, C8, D8, E8, F8, G8, H8,
    A7, B7, C7, D7, E7, F7, G7, H7,
    A6, B6, C6, D6, E6, F6, G6, H6,
    A5, B5, C5, D5, E5, F5, G5, H5,
    A4, B4, C4, D4, E4, F4, G4, H4,
    A3, B3, C3, D3, E3, F3, G3, H3,
    A2, B2, C2, D2, E2, F2, G2, H2,
    A1, B1, C1, D1, E1, F1, G1, H1
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    A1, B1, C1, D1, E1, F1, G1, H1,
    A2, B2, C2, D2, E2, F2, G2, H2,
    A3, B3, C3, D3, E3, F3, G3, H3,
    A4, B4, C4, D4, E4, F4, G4, H4,
    A5, B5, C5, D5, E5, F5, G5, H5,
    A6, B6, C6, D6, E6, F6, G6, H6,
    A7, B7, C7, D7, E7, F7, G7, H7,
    A8, B8, C8, D8, E8, F8, G8, H8
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; dist_bonus&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/*****************************************************************
*                           PAWN PCSQ                            *
*                                                                *
*  Unlike TSCP, CPW generally doesn&#039;t want to advance its pawns  *
*  just for the fun of it. It takes into account the following:  *
*                                                                *
*  - file-dependent component, encouraging program to capture    *
*    towards the center                                          *
*  - small bonus for staying on the 2nd rank                     *
*  - small bonus for standing on a3/h3                           *
*  - penalty for d/e pawns on their initial squares              *
*  - bonus for occupying the center                              *
*****************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; pawn_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; pawn_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
*    KNIGHT PCSQ                                                *
*                                                               *
*   - centralization bonus                                      *
*   - penalty for not being developed                           *
****************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; knight_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; knight_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
*                BISHOP PCSQ                                    *
*                                                               *
*   - centralization bonus, smaller than for knight             *
*   - penalty for not being developed                           *
*   - good squares on the own half of the board                 *
****************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bishop_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bishop_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
*                        ROOK PCSQ                              *
*                                                               *
*    - bonus for 7th and 8th ranks                              *
*    - penalty for a/h columns                                  *
*    - small centralization bonus                               *
*****************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rook_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rook_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************************
*                     QUEEN PCSQ                                           *
*                                                                          *
* - small bonus for centralization in the endgame                          *
* - penalty for staying on the 1st rank, between rooks in the midgame      *
***************************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; queen_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; queen_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; king_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;70&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;70&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; king_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;72&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;72&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;72&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;72&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/*****************************************************************
*                     WEAK PAWNS PCSQ                            *
*                                                                *
*  Current version of CPW-engine does not differentiate between  *
*  isolated  and  backward pawns, using one  generic  cathegory  *
*  of  weak pawns. The penalty is bigger in the center, on  the  *
*  assumption  that  weak  central pawns can be  attacked  from  *
*  many  directions. If the penalty seems too low, please  note  *
*  that being on a semi-open file will come into equation, too.  *
*****************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; weak_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
    &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
     &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
     &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; passed_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,
     &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; setDefaultEval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    setBasicValues&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    setSquaresNearKing&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    setPcsq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    readIniFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    correctValues&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; setBasicValues&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************************
    *  We use material values by IM Larry Kaufman with additional + 10 for a Bishop *
    *  and only +30 for a Bishop pair                                                 *
    ********************************************************************************/&lt;/span&gt;
&amp;nbsp;
    e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KING&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;975&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;335&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;325&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    e.&lt;span class=&quot;me1&quot;&gt;BISHOP_PAIR&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_PAIR&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_ROOK_PAIR&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************
    *  Calculate  the  value  of  piece  material    *
    *  at  the  beginning of  the  game,  which  is  *
    *  used for scaling the king tropism evaluation. *
    *  This  way we don&#039;t have to update a constant  *
    *  every time we change material values.         *
    *************************************************/&lt;/span&gt;
&amp;nbsp;
    e.&lt;span class=&quot;me1&quot;&gt;START_MATERIAL&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************
    * Values used for sorting captures are the same  *
    * as normal piece values, except for a king.     *
    *************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;SORT_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;SORT_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KING&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_KING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* trapped and blocked pieces */&lt;/span&gt;
&amp;nbsp;
    e.&lt;span class=&quot;me1&quot;&gt;P_KING_BLOCKS_ROOK&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_BLOCK_CENTRAL_PAWN&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A6&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A8&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A7&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* minor penalties */&lt;/span&gt;
&amp;nbsp;
    e.&lt;span class=&quot;me1&quot;&gt;P_C3_KNIGHT&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_NO_FIANCHETTO&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* king&#039;s defence */&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;P_NO_SHIELD&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* minor bonuses */&lt;/span&gt;
&amp;nbsp;
    e.&lt;span class=&quot;me1&quot;&gt;ROOK_OPEN&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;ROOK_HALF&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;RETURNING_BISHOP&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;FIANCHETTO&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    e.&lt;span class=&quot;me1&quot;&gt;TEMPO&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    e.&lt;span class=&quot;me1&quot;&gt;ENDGAME_MAT&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1300&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; setSquaresNearKing&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// squares constituting the ring around both kings&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NORTH &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SOUTH &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                    j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; EAST &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; WEST &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                    j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NW &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NE &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                    j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SW &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                    e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                    e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;coMULTI&quot;&gt;/* squares in front of the white king ring */&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NORTH &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NORTH &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                    j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NORTH &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NE &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                    j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NORTH &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; NW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// squares in front og the black king ring&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SOUTH &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SOUTH &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                    j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SOUTH &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SE &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                    j &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; i &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SOUTH &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; SW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    e.&lt;span class=&quot;me1&quot;&gt;sqNearK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; setPcsq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        e.&lt;span class=&quot;me1&quot;&gt;weak_pawn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; weak_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;weak_pawn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; weak_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;passed_pawn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; passed_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;passed_pawn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; passed_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/* protected passers are considered slightly stronger
        than ordinary passed pawns */&lt;/span&gt;
&amp;nbsp;
        e.&lt;span class=&quot;me1&quot;&gt;protected_passer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;passed_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;protected_passer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;passed_pawn_pcsq&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/* now set the piece/square tables for each color and piece type */&lt;/span&gt;
&amp;nbsp;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pawn_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pawn_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; knight_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; knight_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishop_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishop_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rook_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rook_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; queen_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; queen_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KING&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; king_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;mgPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KING&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; king_pcsq_mg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pawn_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pawn_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; knight_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; knight_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishop_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishop_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rook_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rook_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; queen_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; queen_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KING&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_white&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; king_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        e.&lt;span class=&quot;me1&quot;&gt;egPst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KING&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;index_black&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; king_pcsq_eg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* This function is meant to be used in conjunction with the *.ini file.
Its aim is to make sure that all the assumptions made within the program
are met.  */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; correctValues&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; readIniFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;FILE&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;cpw_init&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; line&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* if the cpw.ini file does not exist, then exit */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cpw_init &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;fopen&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;cpw.ini&amp;quot;&lt;/span&gt;, &lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Cannot open cpw.ini, default settings will be used &lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* process cpw.ini file line by line */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;fgets&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;nu0&quot;&gt;250&lt;/span&gt;, cpw_init&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// don&#039;t process comment lines&lt;/span&gt;
        processIniString&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; processIniString&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; line&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;250&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* piece values */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PAWN_VALUE&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PAWN_VALUE %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;KNIGHT_VALUE&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;KNIGHT_VALUE %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;KNIGHT&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;BISHOP_VALUE&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;BISHOP_VALUE %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BISHOP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ROOK_VALUE&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ROOK_VALUE %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ROOK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;QUEEN_VALUE&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;QUEEN_VALUE %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUEEN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* piece pairs */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;BISHOP_PAIR&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;BISHOP_PAIR %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;BISHOP_PAIR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_PAIR&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_PAIR %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_PAIR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_ROOK_PAIR&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_ROOK_PAIR %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_PAIR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* pawn shield*/&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;SHIELD_1&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;SHIELD_1 %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;SHIELD_1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;SHIELD_2&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;SHIELD_2 %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;SHIELD_2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_NO_SHIELD&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_NO_SHIELD %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_NO_SHIELD&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* major penalties */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_BISHOP_TRAPPED_A7&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_BISHOP_TRAPPED_A7 %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_BISHOP_TRAPPED_A6&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_BISHOP_TRAPPED_A6 %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_BISHOP_TRAPPED_A6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_TRAPPED_A8&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_TRAPPED_A8 %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_TRAPPED_A7&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_TRAPPED_A7 %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_KNIGHT_TRAPPED_A7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KING_BLOCKS_ROOK&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_TRAPPED_A7 %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_KING_BLOCKS_ROOK&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_BLOCKED_CENTRAL_PAWN&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_BLOCKED_CENTRAL_PAWN %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_BLOCK_CENTRAL_PAWN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* minor penalties */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_BLOCKS_C&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_KNIGHT_BLOCKS_C %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_C3_KNIGHT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_NO_FIANCHETTO&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;PENALTY_NO_FIANCHETTO %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;P_NO_FIANCHETTO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* minor positional bonuses */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ROOK_OPEN&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ROOK_OPEN %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;ROOK_OPEN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ROOK_HALF_OPEN&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ROOK_HALF_OPEN %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;ROOK_HALF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;FIANCHETTO&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;FIANCHETTO %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;FIANCHETTO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;RETURNING_BISHOP&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;RETURNING_BISHOP %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;RETURNING_BISHOP&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;TEMPO&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;TEMPO %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;TEMPO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* variables deciding about inner workings of evaluation function */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ENDGAME_MATERIAL&amp;quot;&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line, &lt;span class=&quot;st0&quot;&gt;&amp;quot;ENDGAME_MATERIAL %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;e.&lt;span class=&quot;me1&quot;&gt;ENDGAME_MAT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_main</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_main</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_main</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_main</comments>
      <pubDate>Mon, 13 Jun 2011 18:46:30 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:11:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:11 --&gt;&lt;!-- ws:start:WikiTextTocRule:12: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Code&quot;&gt;Code&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:12 --&gt;&lt;!-- ws:start:WikiTextTocRule:13: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Code-header&quot;&gt;header&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:13 --&gt;&lt;!-- ws:start:WikiTextTocRule:14: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Code-int main()&quot;&gt;int main()&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:14 --&gt;&lt;!-- ws:start:WikiTextTocRule:15: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:15 --&gt;&lt;!-- ws:start:WikiTextTocRule:16: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:16 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * main&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The main part of the engine.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:3:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Code&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:3 --&gt;Code&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:5:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Code-header&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:5 --&gt;header&lt;/h2&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;enum etask {&amp;lt;br/&amp;gt;    TASK_NOTHING,&amp;lt;br/&amp;gt;    TASK_SEARCH&amp;lt;br/&amp;gt;} extern task;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; etask &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    TASK_NOTHING,
    TASK_SEARCH
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; task&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:7:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Code-int main()&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:7 --&gt;int main()&lt;/h2&gt;
 &lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int main() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    com_init();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    while(1) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (task == TASK_NOTHING) {&amp;lt;br/&amp;gt;            com();&amp;lt;br/&amp;gt;        } else {&amp;lt;br/&amp;gt;            root();&amp;lt;br/&amp;gt;            task = TASK_NOTHING;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    com_init&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;task &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            com&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            task &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TASK_NOTHING&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;br /&gt;
External calls:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_com&quot;&gt;com();&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_root&quot;&gt;root();&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:9:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:9 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:02:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_main&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_main&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_main includeBody-CPW-Engine_main includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_main&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_main&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 13, 2011&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:02 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_move(0x88)</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_move%280x88%29</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_move%280x88%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_move%280x88%29</comments>
      <pubDate>Tue, 30 Dec 2014 19:09:21 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Move(0x88)&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Both move_make and move_unmake call the functions fillSq(color, piece, square) and clearSq(square). They are meant to encapsulate all the incremental updates (material and pcsq calues, hash keys etc.) and can be viewed in &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_board%280x88%29&quot;&gt;CPW-Engine_board(0x88)&lt;/a&gt;. Ideally this will make both make and unmake functions independent from the board representation. Beside that, incremental update code will be rather long, if not necessarily ugly.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Code&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;Code&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;transposition.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_makeNull() {&amp;lt;br/&amp;gt;    b.stm = !b.stm;&amp;lt;br/&amp;gt;    b.hash ^= zobrist.color;&amp;lt;br/&amp;gt;    b.ply ++;&amp;lt;br/&amp;gt;    if (b.ep != -1) {&amp;lt;br/&amp;gt;        b.hash ^= zobrist.ep[b.ep];&amp;lt;br/&amp;gt;        b.ep = -1;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_unmakeNull(char ep) {&amp;lt;br/&amp;gt;    b.stm = !b.stm;&amp;lt;br/&amp;gt;    b.hash ^= zobrist.color;&amp;lt;br/&amp;gt;    b.ply &amp;amp;#45;-;&amp;lt;br/&amp;gt;    if (ep != -1) {&amp;lt;br/&amp;gt;        b.hash ^= zobrist.ep[ep];&amp;lt;br/&amp;gt;        b.ep = ep;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_make(smove move) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* switch the side to move */&amp;lt;br/&amp;gt;    b.stm = !b.stm;&amp;lt;br/&amp;gt;    b.hash ^= zobrist.color;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* a capture or a pawn move clears b.ply */&amp;lt;br/&amp;gt;    b.ply ++;&amp;lt;br/&amp;gt;    if ( (move.piece_from == PAWN) || move_iscapt(move) )&amp;lt;br/&amp;gt;        b.ply = 0;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* a piece vacates its initial square */&amp;lt;br/&amp;gt;    clearSq(move.from);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* in case of a capture, the &amp;amp;quot;to&amp;amp;quot; square must be cleared,&amp;lt;br/&amp;gt;       else incrementally updated stuff gets blown up &amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if ( b.pieces[move.to] != PIECE_EMPTY )&amp;lt;br/&amp;gt;       clearSq(move.to);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* a piece arrives to its destination square */&amp;lt;br/&amp;gt;    fillSq( !b.stm, move.piece_to, move.to );&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* castle flags&amp;lt;br/&amp;gt;        if either a king or a rook leaves its initial square, the side looses its castling-right.&amp;lt;br/&amp;gt;        The same happens if another piece moves to this square (eg.: captures a rook on its initial square)&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    switch (move.from) {&amp;lt;br/&amp;gt;    case H1: b.castle &amp;amp;amp;= ~CASTLE_WK; break;&amp;lt;br/&amp;gt;    case E1: b.castle &amp;amp;amp;= ~(CASTLE_WK|CASTLE_WQ); break;&amp;lt;br/&amp;gt;    case A1: b.castle &amp;amp;amp;= ~CASTLE_WQ; break;&amp;lt;br/&amp;gt;    case H8: b.castle &amp;amp;amp;= ~CASTLE_BK; break;&amp;lt;br/&amp;gt;    case E8: b.castle &amp;amp;amp;= ~(CASTLE_BK|CASTLE_BQ); break;&amp;lt;br/&amp;gt;    case A8: b.castle &amp;amp;amp;= ~CASTLE_BQ; break;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    switch (move.to) {&amp;lt;br/&amp;gt;    case H1: b.castle &amp;amp;amp;= ~CASTLE_WK; break;&amp;lt;br/&amp;gt;    case E1: b.castle &amp;amp;amp;= ~(CASTLE_WK|CASTLE_WQ); break;&amp;lt;br/&amp;gt;    case A1: b.castle &amp;amp;amp;= ~CASTLE_WQ; break;&amp;lt;br/&amp;gt;    case H8: b.castle &amp;amp;amp;= ~CASTLE_BK; break;&amp;lt;br/&amp;gt;    case E8: b.castle &amp;amp;amp;= ~(CASTLE_BK|CASTLE_BQ); break;&amp;lt;br/&amp;gt;    case A8: b.castle &amp;amp;amp;= ~CASTLE_BQ; break;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    b.hash ^= zobrist.castling[move.castle];&amp;lt;br/&amp;gt;    b.hash ^= zobrist.castling[b.castle];&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* castle-move&amp;lt;br/&amp;gt;        in communication with the gui a castling move is represented through &amp;lt;br/&amp;gt;        the king move. (eg.: e1g1 = White castles short) This king move already&amp;lt;br/&amp;gt;        got executed in the code above with the fillSq() and clearSq() command.&amp;lt;br/&amp;gt;        Whats missing now is the relating rook-move.&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if (move.flags &amp;amp;amp; MFLAG_CASTLE) {&amp;lt;br/&amp;gt;        if (move.to == G1) {&amp;lt;br/&amp;gt;            clearSq(H1);&amp;lt;br/&amp;gt;            fillSq(WHITE,ROOK,F1);&amp;lt;br/&amp;gt;        } &amp;lt;br/&amp;gt;        else if (move.to == C1) {&amp;lt;br/&amp;gt;            clearSq(A1);&amp;lt;br/&amp;gt;            fillSq(WHITE,ROOK,D1);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        else if (move.to == G8) {&amp;lt;br/&amp;gt;            clearSq(H8);&amp;lt;br/&amp;gt;            fillSq(BLACK,ROOK,F8);&amp;lt;br/&amp;gt;        } &amp;lt;br/&amp;gt;        else if (move.to == C8) {&amp;lt;br/&amp;gt;            clearSq(A8);&amp;lt;br/&amp;gt;            fillSq(BLACK,ROOK,D8);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* en-passant flag&amp;lt;br/&amp;gt;        First erase the current state of the ep-flag, then set it again &amp;lt;br/&amp;gt;        in  case there has been a two square pawn move that allows such&amp;lt;br/&amp;gt;        capture. For example, 1.e4 in the initial position will not set&amp;lt;br/&amp;gt;        the en passant flag, because there are no black pawns on d4 and f4.&amp;lt;br/&amp;gt;        This soluion helps with opening book and increases the number of&amp;lt;br/&amp;gt;        transposition table hits.&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if (b.ep != -1) {&amp;lt;br/&amp;gt;        b.hash ^= zobrist.ep[b.ep];&amp;lt;br/&amp;gt;        b.ep = -1;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    if ( (move.piece_from == PAWN) &amp;amp;amp;&amp;amp;amp; ( abs(move.from - move.to) == 32 ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;         ( pawnRecapture( !b.stm, (move.from + move.to) / 2 ) ) &amp;lt;br/&amp;gt;       ) {&amp;lt;br/&amp;gt;        b.ep = (move.from + move.to) / 2;&amp;lt;br/&amp;gt;        b.hash ^= zobrist.ep[b.ep];&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* en-passant capture&amp;lt;br/&amp;gt;        if the move is an en-passant capture, the captured pawn has to be removed manually&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if (move.flags &amp;amp;amp; MFLAG_EPCAPTURE) {&amp;lt;br/&amp;gt;        if (!b.stm == WHITE) {&amp;lt;br/&amp;gt;            clearSq(move.to - 16);&amp;lt;br/&amp;gt;        } else {&amp;lt;br/&amp;gt;            clearSq(move.to + 16);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    ++b.rep_index;&amp;lt;br/&amp;gt;    b.rep_stack[b.rep_index] = b.hash;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_unmake(smove move) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    b.stm = !b.stm;&amp;lt;br/&amp;gt;    b.hash ^= zobrist.color;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    b.ply = move.ply;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* set en passant square */&amp;lt;br/&amp;gt;    if (b.ep != -1) &amp;lt;br/&amp;gt;        b.hash ^= zobrist.ep[b.ep];&amp;lt;br/&amp;gt;    if (move.ep != -1) &amp;lt;br/&amp;gt;        b.hash ^= zobrist.ep[move.ep];&amp;lt;br/&amp;gt;    b.ep = move.ep;&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    clearSq(move.to);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    fillSq(b.stm, move.piece_from, move.from);&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* un-capture&amp;lt;br/&amp;gt;        in case of a capture, put the captured piece back&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if ( move_iscapt(move) )&amp;lt;br/&amp;gt;       fillSq(!b.stm, move.piece_cap, move.to );&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* un-castle&amp;lt;br/&amp;gt;        the king has already been moved, now move the rook&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if (move.flags &amp;amp;amp; MFLAG_CASTLE) {&amp;lt;br/&amp;gt;        if (move.to == G1) {&amp;lt;br/&amp;gt;            clearSq(F1);&amp;lt;br/&amp;gt;            fillSq(WHITE,ROOK,H1);&amp;lt;br/&amp;gt;        } &amp;lt;br/&amp;gt;        else if (move.to == C1) {&amp;lt;br/&amp;gt;            clearSq(D1);&amp;lt;br/&amp;gt;            fillSq(WHITE,ROOK,A1);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        else if (move.to == G8) {&amp;lt;br/&amp;gt;            clearSq(F8);&amp;lt;br/&amp;gt;            fillSq(BLACK,ROOK,H8);&amp;lt;br/&amp;gt;        } &amp;lt;br/&amp;gt;        else if (move.to == C8) {&amp;lt;br/&amp;gt;            clearSq(D8);&amp;lt;br/&amp;gt;            fillSq(BLACK,ROOK,A8);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* adjust castling flags */&amp;lt;br/&amp;gt;    b.hash ^= zobrist.castling[move.castle];&amp;lt;br/&amp;gt;    b.hash ^= zobrist.castling[b.castle];&amp;lt;br/&amp;gt;    b.castle = move.castle;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* en-passant-uncapture&amp;lt;br/&amp;gt;        put the captured pawn back to its initial square&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if (move.flags &amp;amp;amp; MFLAG_EPCAPTURE) {&amp;lt;br/&amp;gt;        if (b.stm == WHITE) {&amp;lt;br/&amp;gt;            fillSq(BLACK,PAWN,move.to - 16);&amp;lt;br/&amp;gt;        } else {&amp;lt;br/&amp;gt;            fillSq(WHITE,PAWN,move.to + 16);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    &amp;amp;#45;-b.rep_index;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_iscapt(smove m) {&amp;lt;br/&amp;gt;    return (m.piece_cap != PIECE_EMPTY);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_isprom(smove m) {&amp;lt;br/&amp;gt;    return (m.piece_from != m.piece_to);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_canSimplify(smove m) {&amp;lt;br/&amp;gt;    if ( m.piece_cap == PAWN ||&amp;lt;br/&amp;gt;         b.PieceMaterial[!b.stm] - e.PIECE_VALUE[m.piece_cap] &amp;amp;gt; e.ENDGAME_MAT )&amp;lt;br/&amp;gt;        return 0;&amp;lt;br/&amp;gt;    else&amp;lt;br/&amp;gt;        return 1;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;// this function returns number of legal moves in the current position&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_countLegal() {&amp;lt;br/&amp;gt;    smove mlist[256];&amp;lt;br/&amp;gt;    int mcount = movegen(mlist, 0xFF);&amp;lt;br/&amp;gt;    int result = 0;&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; mcount; i++) {&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        // try a move...&amp;lt;br/&amp;gt;        move_make( mlist[i] ); &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        // ...then increase the counter if it did not leave us in check&amp;lt;br/&amp;gt;        if ( !isAttacked( b.stm, b.KingLoc[!b.stm] ) ) ++result;&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        move_unmake(mlist[i]);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return result;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int move_isLegal(smove m) {&amp;lt;br/&amp;gt;    smove movelist[256];&amp;lt;br/&amp;gt;    int movecount = movegen(movelist, 0xFF);&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; movecount; i++) {&amp;lt;br/&amp;gt;        if ( movelist[i].from == m.from &amp;amp;amp;&amp;amp;amp; &amp;lt;br/&amp;gt;             movelist[i].to   == m.to ) {&amp;lt;br/&amp;gt;            &amp;lt;br/&amp;gt;                 int result = 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                 // test if the move in question leaves us in check&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                 move_make( movelist[i] );&amp;lt;br/&amp;gt;                 if ( isAttacked( b.stm, b.KingLoc[!b.stm] ) ) result = 0;&amp;lt;br/&amp;gt;                 move_unmake( movelist[i] );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                 return result;&amp;lt;br/&amp;gt;           }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;transposition.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_makeNull&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_unmakeNull&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; ep&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ep &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ep&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ep&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* switch the side to move */&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* a capture or a pawn move clears b.ply */&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; move_iscapt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* a piece vacates its initial square */&lt;/span&gt;
    clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* in case of a capture, the &amp;quot;to&amp;quot; square must be cleared,
       else incrementally updated stuff gets blown up 
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* a piece arrives to its destination square */&lt;/span&gt;
    fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, move.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt;, move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* castle flags
        if either a king or a rook leaves its initial square, the side looses its castling-right.
        The same happens if another piece moves to this square (eg.: captures a rook on its initial square)
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_WK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; E1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;CASTLE_WK&lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;CASTLE_WQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_WQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_BK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; E8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;CASTLE_BK&lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;CASTLE_BQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_BQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_WK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; E1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;CASTLE_WK&lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;CASTLE_WQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A1&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_WQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; H8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_BK&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; E8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;CASTLE_BK&lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;CASTLE_BQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; A8&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~CASTLE_BQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;castling&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;castling&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* castle-move
        in communication with the gui a castling move is represented through 
        the king move. (eg.: e1g1 = White castles short) This king move already
        got executed in the code above with the fillSq() and clearSq() command.
        Whats missing now is the relating rook-move.
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; MFLAG_CASTLE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; G1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;H1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE,ROOK,F1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; C1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;A1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE,ROOK,D1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; G8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;H8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK,ROOK,F8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; C8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;A8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK,ROOK,D8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* en-passant flag
        First erase the current state of the ep-flag, then set it again 
        in  case there has been a two square pawn move that allows such
        capture. For example, 1.e4 in the initial position will not set
        the en passant flag, because there are no black pawns on d4 and f4.
        This soluion helps with opening book and increases the number of
        transposition table hits.
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; pawnRecapture&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* en-passant capture
        if the move is an en-passant capture, the captured pawn has to be removed manually
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; MFLAG_EPCAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;rep_stack&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* set en passant square */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, move.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt;, move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* un-capture
        in case of a capture, put the captured piece back
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; move_iscapt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, move.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt;, move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* un-castle
        the king has already been moved, now move the rook
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; MFLAG_CASTLE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; G1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;F1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE,ROOK,H1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; C1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;D1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE,ROOK,A1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; G8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;F8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK,ROOK,H8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; C8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            clearSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;D8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK,ROOK,A8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* adjust castling flags */&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;castling&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; zobrist.&lt;span class=&quot;me1&quot;&gt;castling&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* en-passant-uncapture
        put the captured pawn back to its initial square
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; MFLAG_EPCAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK,PAWN,move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            fillSq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE,PAWN,move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_iscapt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_isprom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_canSimplify&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
         b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;m.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ENDGAME_MAT&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// this function returns number of legal moves in the current position&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_countLegal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    smove mlist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mcount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mlist, &lt;span class=&quot;nu12&quot;&gt;0xFF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// try a move...&lt;/span&gt;
        move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mlist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// ...then increase the counter if it did not leave us in check&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mlist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_isLegal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    smove movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; movecount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;movelist, &lt;span class=&quot;nu12&quot;&gt;0xFF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; movecount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
             movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                 &lt;span class=&quot;co1&quot;&gt;// test if the move in question leaves us in check&lt;/span&gt;
&amp;nbsp;
                 move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                 move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                 &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@component=&amp;amp;quot;backlinks&amp;amp;quot; page=&amp;amp;quot;CPW-Engine_move(0x88)&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: component=&amp;amp;quot;backlinks&amp;amp;quot; page=&amp;amp;quot;CPW-Engine_move(0x88)&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_move(0x88) includeBody-CPW-Engine_move%280x88%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/0x88&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;0x88&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 28, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_move%280x88%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_move(0x88)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_root&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_root&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 27, 2008&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_movegen(0x88)</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_movegen%280x88%29</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_movegen%280x88%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_movegen%280x88%29</comments>
      <pubDate>Tue, 30 Dec 2014 19:07:11 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * movegen(0x88)&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This page holds the movegenerator of the engine CPW. For function definitions see &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_movegen_h&quot;&gt;CPW-Engine_movegen_h&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Current version contains just one move generator with some conditional statements deciding whether we generate a full set of moves, or captures only. This is of course suboptimal, but the speed loss is really small. For that reason we postpone writing a separate capture generator until we are 100% sure about the exact shape of te smove struct, board representation etc.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;0x88_math.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;movegen.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U8 movecount;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;smove * m;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;bool slide[5] = { 0, 1, 1, 1, 0 };&amp;lt;br/&amp;gt;char vectors[5] = { 8, 8, 4, 4, 8 };&amp;lt;br/&amp;gt;char vector[5][8] = {&amp;lt;br/&amp;gt;    { SW, SOUTH, SE, WEST, EAST, NW, NORTH, NE },&amp;lt;br/&amp;gt;    { SW, SOUTH, SE, WEST, EAST, NW, NORTH, NE },&amp;lt;br/&amp;gt;    { SOUTH, WEST, EAST, NORTH                 },&amp;lt;br/&amp;gt;    { SW, SE, NW, NE                           },&amp;lt;br/&amp;gt;    { -33, -31, -18, -14, 14, 18, 31, 33       }&amp;lt;br/&amp;gt;    };&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;//returns movecount&amp;lt;br/&amp;gt;U8 movegen(smove * moves, U8 tt_move, bool captures) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    m = moves;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    movecount = 0;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if (!captures) {&amp;lt;br/&amp;gt;        //Castling&amp;lt;br/&amp;gt;        if ( b.stm == WHITE ) {&amp;lt;br/&amp;gt;            if ( b.castle &amp;amp;amp; CASTLE_WK ) {&amp;lt;br/&amp;gt;                if ( ( b.pieces[F1] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( b.pieces[G1] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,E1) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,F1) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,G1) ) )&amp;lt;br/&amp;gt;                    movegen_push(E1,G1,KING,PIECE_EMPTY,MFLAG_CASTLE);&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;            if ( b.castle &amp;amp;amp; CASTLE_WQ ) {&amp;lt;br/&amp;gt;                if ( ( b.pieces[B1] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( b.pieces[C1] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( b.pieces[D1] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,E1) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,D1) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,C1) ) )&amp;lt;br/&amp;gt;                    movegen_push(E1,C1,KING,PIECE_EMPTY,MFLAG_CASTLE);&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;        } else {&amp;lt;br/&amp;gt;            if ( b.castle &amp;amp;amp; CASTLE_BK ) {&amp;lt;br/&amp;gt;                if ( ( b.pieces[F8] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( b.pieces[G8] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,E8) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,F8) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,G8) ) )&amp;lt;br/&amp;gt;                    movegen_push(E8,G8,KING,PIECE_EMPTY,MFLAG_CASTLE);&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;            if ( b.castle &amp;amp;amp; CASTLE_BQ ) {&amp;lt;br/&amp;gt;                if ( ( b.pieces[B8] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( b.pieces[C8] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( b.pieces[D8] == PIECE_EMPTY ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,E8) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,D8) ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;                     ( !isAttacked(!b.stm,C8) ) )&amp;lt;br/&amp;gt;                    movegen_push(E8,C8,KING,PIECE_EMPTY,MFLAG_CASTLE);&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (S8 sq=0;sq&amp;amp;lt;120;sq++) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        if (b.color[sq] == b.stm) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;            if (b.pieces[sq] == PAWN) {&amp;lt;br/&amp;gt;                movegen_pawn_move(sq, captures);&amp;lt;br/&amp;gt;                movegen_pawn_capt(sq);&amp;lt;br/&amp;gt;            } else {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                for (char dir=0;dir&amp;amp;lt;vectors[b.pieces[sq]];dir++) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                    for (char pos = sq;;) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        pos = pos + vector[b.pieces[sq]][dir];&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        if (! IS_SQ(pos)) break;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        if (b.pieces[pos] == PIECE_EMPTY) {&amp;lt;br/&amp;gt;                            if (!captures)&amp;lt;br/&amp;gt;                                movegen_push(sq, pos, b.pieces[sq], PIECE_EMPTY, MFLAG_NORMAL);&amp;lt;br/&amp;gt;                        }&amp;lt;br/&amp;gt;                        else if (b.color[pos] != b.stm) {&amp;lt;br/&amp;gt;                            movegen_push(sq, pos, b.pieces[sq], b.pieces[pos], MFLAG_CAPTURE);&amp;lt;br/&amp;gt;                            break;&amp;lt;br/&amp;gt;                        }&amp;lt;br/&amp;gt;                        else {&amp;lt;br/&amp;gt;                            break;&amp;lt;br/&amp;gt;                        }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        if (! slide[b.pieces[sq]]) break;&amp;lt;br/&amp;gt;                    }&amp;lt;br/&amp;gt;                }&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* if we have a best-move fed into movegen(), then increase its score */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (  ( tt_move != -1 ) &amp;amp;amp;&amp;amp;amp; ( tt_move &amp;amp;lt; movecount ) ) moves[tt_move].score = SORT_HASH;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return movecount;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U8 movegen_qs(smove * moves) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    m = moves;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    movecount = 0;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        for (S8 sq=0;sq&amp;amp;lt;120;sq++) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        if (b.color[sq] == b.stm) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;            if (b.pieces[sq] == PAWN) {&amp;lt;br/&amp;gt;                movegen_pawn_move(sq, 1);&amp;lt;br/&amp;gt;                movegen_pawn_capt(sq);&amp;lt;br/&amp;gt;            } else {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                for (char dir=0;dir&amp;amp;lt;vectors[b.pieces[sq]];dir++) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                    for (char pos = sq;;) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        pos = pos + vector[b.pieces[sq]][dir];&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        if (! IS_SQ(pos)) break;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        if (b.pieces[pos] != PIECE_EMPTY) {&amp;lt;br/&amp;gt;                            if (b.color[pos] != b.stm) {&amp;lt;br/&amp;gt;                                movegen_push(sq, pos, b.pieces[sq], b.pieces[pos], MFLAG_CAPTURE);&amp;lt;br/&amp;gt;                                break;&amp;lt;br/&amp;gt;                            }&amp;lt;br/&amp;gt;                            else break; // hitting own piece&amp;lt;br/&amp;gt;                        }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;                        if (! slide[b.pieces[sq]]) break;&amp;lt;br/&amp;gt;                    }&amp;lt;br/&amp;gt;                }&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return movecount;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void movegen_pawn_move(S8 sq, bool promotion_only) {&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    if ( b.stm == WHITE ) {&amp;lt;br/&amp;gt;        if (promotion_only &amp;amp;amp;&amp;amp;amp; (ROW(sq) &amp;amp;lt; 7)) return;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (b.pieces[sq+NORTH] == PIECE_EMPTY) {&amp;lt;br/&amp;gt;            movegen_push(sq, sq+NORTH, PAWN, PIECE_EMPTY, MFLAG_NORMAL);&amp;lt;br/&amp;gt;            if ( ( ROW(sq) == 1 ) &amp;amp;amp;&amp;amp;amp; &amp;lt;br/&amp;gt;                 ( b.pieces[sq+NN] == PIECE_EMPTY ) &amp;lt;br/&amp;gt;               ) {&amp;lt;br/&amp;gt;                movegen_push(sq, sq+NN, PAWN, PIECE_EMPTY, MFLAG_EP);&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    } else {&amp;lt;br/&amp;gt;        if (promotion_only &amp;amp;amp;&amp;amp;amp; (ROW(sq) &amp;amp;gt; 1)) return;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (b.pieces[sq+SOUTH] == PIECE_EMPTY) {&amp;lt;br/&amp;gt;            movegen_push(sq, sq+SOUTH, PAWN, PIECE_EMPTY, MFLAG_NORMAL);&amp;lt;br/&amp;gt;            if ( ( ROW(sq) == 6 ) &amp;amp;amp;&amp;amp;amp; &amp;lt;br/&amp;gt;                 ( b.pieces[sq+SS] == PIECE_EMPTY ) &amp;lt;br/&amp;gt;               ) {&amp;lt;br/&amp;gt;                movegen_push(sq, sq+SS, PAWN, PIECE_EMPTY, MFLAG_EP);&amp;lt;br/&amp;gt;            }&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void movegen_pawn_capt(S8 sq) {&amp;lt;br/&amp;gt;    if (b.stm == WHITE) {&amp;lt;br/&amp;gt;        if (IS_SQ(sq+NW) &amp;amp;amp;&amp;amp;amp; ((b.ep==sq+NW) || (b.color[sq+NW] == (b.stm^1)))) {&amp;lt;br/&amp;gt;            movegen_push(sq, sq+NW, PAWN, b.pieces[sq+NW], MFLAG_CAPTURE);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        if (IS_SQ(sq+NE) &amp;amp;amp;&amp;amp;amp; ((b.ep==sq+NE) || (b.color[sq+NE] == (b.stm^1)))) {&amp;lt;br/&amp;gt;            movegen_push(sq, sq+17, PAWN, b.pieces[sq+NE], MFLAG_CAPTURE);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    } else {&amp;lt;br/&amp;gt;        if (IS_SQ(sq+SE) &amp;amp;amp;&amp;amp;amp; ((b.ep==sq+SE) || (b.color[sq+SE] == (b.stm^1)))) {&amp;lt;br/&amp;gt;            movegen_push(sq, sq+SE, PAWN, b.pieces[sq+SE], MFLAG_CAPTURE);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        if (IS_SQ(sq+SW) &amp;amp;amp;&amp;amp;amp; ((b.ep==sq+SW) || (b.color[sq+SW] == (b.stm^1)))) {&amp;lt;br/&amp;gt;            movegen_push(sq, sq+SW, PAWN, b.pieces[sq+SW], MFLAG_CAPTURE);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void movegen_push(char from, char to, U8 piece_from, U8 piece_cap, char flags) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    m[movecount].from = from;&amp;lt;br/&amp;gt;    m[movecount].to = to;&amp;lt;br/&amp;gt;    m[movecount].piece_from = piece_from;&amp;lt;br/&amp;gt;    m[movecount].piece_to = piece_from;&amp;lt;br/&amp;gt;    m[movecount].piece_cap = piece_cap;&amp;lt;br/&amp;gt;    m[movecount].flags = flags;&amp;lt;br/&amp;gt;    m[movecount].ply = b.ply;&amp;lt;br/&amp;gt;    m[movecount].castle = b.castle;&amp;lt;br/&amp;gt;    m[movecount].ep = b.ep;&amp;lt;br/&amp;gt;    m[movecount].id = movecount;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    m[movecount].score = sd.history[from][to];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* score for capture:&amp;lt;br/&amp;gt;        Add the value of the captured piece and the id of the attacking piece.&amp;lt;br/&amp;gt;        So that if two pieces can attack the same target, the one with the higher id (eg. Pawn=5) gets searched first.&amp;lt;br/&amp;gt;    */&amp;lt;br/&amp;gt;    if (piece_cap != PIECE_EMPTY) &amp;lt;br/&amp;gt;        m[movecount].score = SORT_CAPT + e.SORT_VALUE[piece_cap] + piece_from;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    //score for ep-capture&amp;lt;br/&amp;gt;    if ((piece_from == PAWN) &amp;amp;amp;&amp;amp;amp; (to == b.ep)) {&amp;lt;br/&amp;gt;        m[movecount].score = SORT_CAPT + e.SORT_VALUE[PAWN] + 5;&amp;lt;br/&amp;gt;        m[movecount].flags = MFLAG_EPCAPTURE;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    if ((piece_from == PAWN) &amp;amp;amp;&amp;amp;amp; ( (ROW(to)==0)||(ROW(to)==7) )) {&amp;lt;br/&amp;gt;        m[movecount].flags |= MFLAG_PROMOTION;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        for (char prompiece = QUEEN; prompiece &amp;amp;lt;= KNIGHT; prompiece++) {&amp;lt;br/&amp;gt;            m[movecount+prompiece-1] = m[movecount];&amp;lt;br/&amp;gt;            m[movecount+prompiece-1].piece_to = prompiece;&amp;lt;br/&amp;gt;            m[movecount+prompiece-1].score += SORT_PROM + e.SORT_VALUE[prompiece];&amp;lt;br/&amp;gt;            m[movecount+prompiece-1].id = movecount+prompiece-1;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        movecount += 3;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    movecount++;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void movegen_sort(U8 movecount, smove * m, U8 current) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    //find the move with the highest score - hoping for an early cutoff&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int high = current;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i=current+1; i&amp;amp;lt;movecount; i++) {&amp;lt;br/&amp;gt;        if (m[i].score &amp;amp;gt; m[high].score)&amp;lt;br/&amp;gt;            high = i;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    smove temp = m[high];&amp;lt;br/&amp;gt;    m[high] = m[current];&amp;lt;br/&amp;gt;    m[current] = temp;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;0x88_math.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;movegen.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
U8 movecount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
smove &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; m&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; slide&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; vectors&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; SW, SOUTH, SE, WEST, EAST, NW, NORTH, NE &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;,
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; SW, SOUTH, SE, WEST, EAST, NW, NORTH, NE &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;,
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; SOUTH, WEST, EAST, NORTH                 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;,
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; SW, SE, NW, NE                           &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;,
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;       &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//returns movecount&lt;/span&gt;
U8 movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; moves, U8 tt_move, &lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; captures&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    m &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; moves&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    movecount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;captures&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;//Castling&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; CASTLE_WK &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;F1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;G1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,E1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,F1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,G1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;E1,G1,KING,PIECE_EMPTY,MFLAG_CASTLE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; CASTLE_WQ &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;B1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;C1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,E1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,D1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,C1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;E1,C1,KING,PIECE_EMPTY,MFLAG_CASTLE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; CASTLE_BK &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;F8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;G8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,E8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,F8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,G8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;E8,G8,KING,PIECE_EMPTY,MFLAG_CASTLE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; CASTLE_BQ &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;B8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;C8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,E8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,D8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;,C8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;E8,C8,KING,PIECE_EMPTY,MFLAG_CASTLE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;sq&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                movegen_pawn_move&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, captures&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                movegen_pawn_capt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; dir&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;vectors&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                        pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;captures&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                                movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, pos, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, PIECE_EMPTY, MFLAG_NORMAL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                            movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, pos, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, MFLAG_CAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt; slide&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* if we have a best-move fed into movegen(), then increase its score */&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; tt_move &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; tt_move &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; movecount &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; moves&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;tt_move&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_HASH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; movecount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U8 movegen_qs&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; moves&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    m &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; moves&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    movecount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;sq&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                movegen_pawn_move&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                movegen_pawn_capt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; dir&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;vectors&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;dir&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq&lt;span class=&quot;sy4&quot;&gt;;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                        pos &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; vector&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                                movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, pos, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, MFLAG_CAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// hitting own piece&lt;/span&gt;
                        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt; slide&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; movecount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; movegen_pawn_move&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, &lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; promotion_only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;promotion_only &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NORTH&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NORTH, PAWN, PIECE_EMPTY, MFLAG_NORMAL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
                 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
               &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NN, PAWN, PIECE_EMPTY, MFLAG_EP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;promotion_only &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SOUTH&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SOUTH, PAWN, PIECE_EMPTY, MFLAG_NORMAL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
                 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SS&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
               &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SS, PAWN, PIECE_EMPTY, MFLAG_EP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; movegen_pawn_capt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NW&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NW, PAWN, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NW&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, MFLAG_CAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;, PAWN, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, MFLAG_CAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SE, PAWN, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, MFLAG_CAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SW&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SW, PAWN, b.&lt;span class=&quot;me1&quot;&gt;pieces&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SW&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, MFLAG_CAPTURE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; from, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; to, U8 piece_from, U8 piece_cap, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; flags&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; from&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; to&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; piece_from&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; piece_from&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; piece_cap&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; flags&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;ply&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;castle&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movecount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;from&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;to&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* score for capture:
        Add the value of the captured piece and the id of the attacking piece.
        So that if two pieces can attack the same target, the one with the higher id (eg. Pawn=5) gets searched first.
    */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;piece_cap &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; PIECE_EMPTY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_CAPT &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SORT_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;piece_cap&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; piece_from&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//score for ep-capture&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;piece_from &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;to &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_CAPT &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SORT_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; MFLAG_EPCAPTURE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;piece_from &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;to&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROW&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;to&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; MFLAG_PROMOTION&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; prompiece &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; QUEEN&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; prompiece &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; KNIGHT&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; prompiece&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;prompiece&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;prompiece&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_to&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; prompiece&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;prompiece&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_PROM &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;SORT_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;prompiece&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movecount&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;prompiece&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movecount&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;prompiece&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        movecount &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    movecount&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; movegen_sort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 movecount, smove &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; m, U8 current&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//find the move with the highest score - hoping for an early cutoff&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; high &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; current&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;current&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;movecount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            high &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    smove temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;current&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;current&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; temp&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@component=&amp;amp;quot;backlinks&amp;amp;quot; page=&amp;amp;quot;CPW-Engine_movegen(0x88)&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: component=&amp;amp;quot;backlinks&amp;amp;quot; page=&amp;amp;quot;CPW-Engine_movegen(0x88)&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_movegen(0x88) includeBody-CPW-Engine_movegen%280x88%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/0x88&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;0x88&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 28, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_movegen%280x88%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_movegen(0x88)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_root&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_root&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 27, 2008&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Move+Generation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Move Generation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 29, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Table-driven+Move+Generation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Table-driven Move Generation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 19, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_movegen_h</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_movegen_h</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_movegen_h</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_movegen_h</comments>
      <pubDate>Tue, 30 Dec 2014 19:08:09 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * movegen.h&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/*********************************************************************&amp;lt;br/&amp;gt;*                              CPW-engine                            *&amp;lt;br/&amp;gt;*           created by some members of Chessprogramming Wiki         *&amp;lt;br/&amp;gt;*                                                                    *&amp;lt;br/&amp;gt;* movegen.h - this file names functions coded within movegen.cpp.    *&amp;lt;br/&amp;gt;* Only movegen() and movegen_sort() are used outside that file.      * &amp;lt;br/&amp;gt;*********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void movegen_push(char from, char to, U8 piece_from, U8 piece_cap, char flags);&amp;lt;br/&amp;gt;void movegen_pawn_move(S8 sq, bool promotion_only);&amp;lt;br/&amp;gt;void movegen_pawn_capt(S8 sq);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*********************************************************************
*                              CPW-engine                            *
*           created by some members of Chessprogramming Wiki         *
*                                                                    *
* movegen.h - this file names functions coded within movegen.cpp.    *
* Only movegen() and movegen_sort() are used outside that file.      * 
*********************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; movegen_push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; from, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; to, U8 piece_from, U8 piece_cap, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; flags&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; movegen_pawn_move&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq, &lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; promotion_only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; movegen_pawn_capt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;S8 sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_quiescence</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_quiescence</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_quiescence</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_quiescence</comments>
      <pubDate>Tue, 30 Dec 2014 18:57:33 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Quiescence&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;0x88_math.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;extern bool time_over;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int Quiesce( int alpha, int beta )  {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( !time_over &amp;amp;amp;&amp;amp;amp; !(sd.nodes &amp;amp;amp; 0x3FF)  )&amp;lt;br/&amp;gt;        time_over = time_stop();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (time_over) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    sd.nodes++;&amp;lt;br/&amp;gt;    sd.q_nodes++;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* get a &amp;amp;quot;stand pat&amp;amp;quot; score */&amp;lt;br/&amp;gt;    int val = eval( alpha, beta, 1);&amp;lt;br/&amp;gt;    int stand_pat = val;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    /* check if stand-pat score causes a beta cutoff */&amp;lt;br/&amp;gt;    if( val &amp;amp;gt;= beta )&amp;lt;br/&amp;gt;        return beta;            &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* check if stand-pat score may become a new alpha */&amp;lt;br/&amp;gt;    if( alpha &amp;amp;lt; val )&amp;lt;br/&amp;gt;        alpha = val;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /*********************************************************************&amp;lt;br/&amp;gt;    *  We have taken into account rhe stand pat score, and it didn&#039;t let *&amp;lt;br/&amp;gt;    *  us  come to a definite conclusion about the position. So we  must *&amp;lt;br/&amp;gt;    *  do a real search.                                                 *&amp;lt;br/&amp;gt;    *********************************************************************/&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    smove movelist[256];&amp;lt;br/&amp;gt;    U8 mcount = movegen_qs(movelist);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (U8 i = 0; i &amp;amp;lt; mcount; i++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        movegen_sort( mcount,movelist, i );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( movelist[i].piece_cap == KING ) return INF;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /***************************************************************** &amp;lt;br/&amp;gt;        *  Delta cutoff - a move guarentees the score well below alpha,  *&amp;lt;br/&amp;gt;        *  so  there&#039;s no point in searching it. This heuristic is  not  *&amp;lt;br/&amp;gt;        *  used  in the endgame, because of the  insufficient  material  *&amp;lt;br/&amp;gt;        *  issues and special endgame evaluation heuristics.             *&amp;lt;br/&amp;gt;        *****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( ( stand_pat + e.PIECE_VALUE[ movelist[i].piece_cap ] + 200 &amp;amp;lt; alpha ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;             ( b.PieceMaterial[!b.stm] - e.PIECE_VALUE[movelist[i].piece_cap] &amp;amp;gt; e.ENDGAME_MAT ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;             ( !move_isprom(movelist[i]) ) )&amp;lt;br/&amp;gt;            continue;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /*****************************************************************&amp;lt;br/&amp;gt;        *  badCapture() replaces a cutoff based on the  Static Exchange  *&amp;lt;br/&amp;gt;        *  Evaluation,  marking  the place where it ought to  be  coded. *&amp;lt;br/&amp;gt;        *  Nevertheless, it saves quite a few nodes.                     *&amp;lt;br/&amp;gt;        *****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( badCapture( movelist[i] ) &amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;    !move_canSimplify( movelist[i] ) &amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;  !move_isprom( movelist[i] )  &amp;lt;br/&amp;gt;           )&amp;lt;br/&amp;gt;           continue;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /*****************************************************************&amp;lt;br/&amp;gt;        *  Cutoffs  misfired, so the move in question can turn out well. *   &amp;lt;br/&amp;gt;        *  Let us try it, then.                                          *&amp;lt;br/&amp;gt;        *****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        move_make( movelist[i] );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        val = -Quiesce( -beta, -alpha );&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        move_unmake( movelist[i] );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (time_over) return 0;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;        if ( val &amp;amp;gt; alpha ) {&amp;lt;br/&amp;gt;            if( val &amp;amp;gt;= beta )&amp;lt;br/&amp;gt;                return beta;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;            alpha = val;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return alpha;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int badCapture(smove move) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* captures by pawn do not lose material */&amp;lt;br/&amp;gt;    if (move.piece_from == PAWN ) return 0;&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    /* Captures &amp;amp;quot;lower takes higher&amp;amp;quot; (as well as BxN) are good by definition. */&amp;lt;br/&amp;gt;    if ( e.PIECE_VALUE[move.piece_cap] &amp;amp;gt;= e.PIECE_VALUE[move.piece_from] - 50 )&amp;lt;br/&amp;gt;        return 0;&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    /**************************************************************************&amp;lt;br/&amp;gt;    *   When the enemy piece is defended by a pawn, in the quiescence search  *&amp;lt;br/&amp;gt;    *   we  will  accept rook takes minor, but not minor takes pawn. ( More   *&amp;lt;br/&amp;gt;    *   exact  version  should accept B/N x P if (a) the pawn  is  the  sole  *&amp;lt;br/&amp;gt;    *   defender and (b) there is more than one attacker.                     * &amp;lt;br/&amp;gt;    **************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( pawnRecapture(b.color[move.from], move.to) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;         e.PIECE_VALUE[move.piece_cap] + 200 - e.PIECE_VALUE[move.piece_from] &amp;amp;lt; 0 )&amp;lt;br/&amp;gt;          return 1;&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    /* if a capture is not processed, it cannot be considered bad */&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int pawnRecapture( U8 capturers_color, char sq) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (capturers_color == WHITE) {&amp;lt;br/&amp;gt;       if ( ( IS_SQ(sq+NW) &amp;amp;amp;&amp;amp;amp; isPiece(BLACK, PAWN, sq+NW) ) ||&amp;lt;br/&amp;gt;            ( IS_SQ(sq+NE) &amp;amp;amp;&amp;amp;amp; isPiece(BLACK, PAWN, sq+NE) ) )&amp;lt;br/&amp;gt;          return 1;            &amp;lt;br/&amp;gt;    } else {&amp;lt;br/&amp;gt;        if ( ( IS_SQ(sq+SW) &amp;amp;amp;&amp;amp;amp; isPiece(WHITE, PAWN, sq+SW) ) ||&amp;lt;br/&amp;gt;                ( IS_SQ(sq+SE) &amp;amp;amp;&amp;amp;amp; isPiece(WHITE, PAWN, sq+SE) )  )&amp;lt;br/&amp;gt;          return 1;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;0x88_math.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; time_over&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; Quiesce&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; alpha, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;time_over &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0x3FF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; time_stop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;time_over&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    sd.&lt;span class=&quot;me1&quot;&gt;q_nodes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* get a &amp;quot;stand pat&amp;quot; score */&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; alpha, beta, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; stand_pat &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* check if stand-pat score causes a beta cutoff */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; beta&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;            
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* check if stand-pat score may become a new alpha */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; alpha &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/*********************************************************************
    *  We have taken into account rhe stand pat score, and it didn&#039;t let *
    *  us  come to a definite conclusion about the position. So we  must *
    *  do a real search.                                                 *
    *********************************************************************/&lt;/span&gt;
&amp;nbsp;
    smove movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    U8 mcount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen_qs&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;movelist&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U8 i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        movegen_sort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mcount,movelist, i &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; KING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; INF&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************** 
        *  Delta cutoff - a move guarentees the score well below alpha,  *
        *  so  there&#039;s no point in searching it. This heuristic is  not  *
        *  used  in the endgame, because of the  insufficient  material  *
        *  issues and special endgame evaluation heuristics.             *
        *****************************************************************/&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; stand_pat &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ENDGAME_MAT&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_isprom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/*****************************************************************
        *  badCapture() replaces a cutoff based on the  Static Exchange  *
        *  Evaluation,  marking  the place where it ought to  be  coded. *
        *  Nevertheless, it saves quite a few nodes.                     *
        *****************************************************************/&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; badCapture&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;    &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_canSimplify&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_isprom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  
           &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/*****************************************************************
        *  Cutoffs  misfired, so the move in question can turn out well. *   
        *  Let us try it, then.                                          *
        *****************************************************************/&lt;/span&gt;
&amp;nbsp;
        move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Quiesce&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;time_over&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; beta&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; alpha&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; badCapture&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* captures by pawn do not lose material */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PAWN &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* Captures &amp;quot;lower takes higher&amp;quot; (as well as BxN) are good by definition. */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/**************************************************************************
    *   When the enemy piece is defended by a pawn, in the quiescence search  *
    *   we  will  accept rook takes minor, but not minor takes pawn. ( More   *
    *   exact  version  should accept B/N x P if (a) the pawn  is  the  sole  *
    *   defender and (b) there is more than one attacker.                     * 
    **************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; pawnRecapture&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
         e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;PIECE_VALUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;piece_from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* if a capture is not processed, it cannot be considered bad */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; pawnRecapture&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; U8 capturers_color, &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;capturers_color &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BLACK, PAWN, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;NE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;            
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; IS_SQ&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPiece&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;WHITE, PAWN, sq&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;SE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_quiescence&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_quiescence&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_quiescence includeBody-CPW-Engine_quiescence includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_quiescence&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_quiescence&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Quiescence+Search&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Quiescence Search&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 19, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_recognize</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_recognize</link>
      <dc:creator>Pawel_Koziol</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_recognize</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_recognize</comments>
      <pubDate>Tue, 30 Dec 2014 18:58:37 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Recognizer&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int is_rim[64] = {&amp;lt;br/&amp;gt;      1,   1,   1,   1,   1,   1,   1,   1,&amp;lt;br/&amp;gt;      1,   0,   0,   0,   0,   0,   0,   1,&amp;lt;br/&amp;gt;      1,   0,   0,   0,   0,   0,   0,   1,&amp;lt;br/&amp;gt;      1,   0,   0,   0,   0,   0,   0,   1,&amp;lt;br/&amp;gt;      1,   0,   0,   0,   0,   0,   0,   1,&amp;lt;br/&amp;gt;      1,   0,   0,   0,   0,   0,   0,   1,&amp;lt;br/&amp;gt;      1,   0,   0,   0,   0,   0,   0,   1,&amp;lt;br/&amp;gt;      1,   1,   1,   1,   1,   1,   1,   1&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* please note that this recognizer assumes that the position is legal, &amp;lt;br/&amp;gt;   i.e. side to move is not in check */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int isDraw() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* no pawns */&amp;lt;br/&amp;gt;    if (!b.PawnMaterial[WHITE] &amp;amp;amp;&amp;amp;amp; !b.PawnMaterial[BLACK] ) {&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        /* both sides have at most one minor piece - to guard against the possibility &amp;lt;br/&amp;gt;           of a helpmate in the corner, we do not claim an immediate draw if the king&amp;lt;br/&amp;gt;           of the weaker side stands on the edge of the board */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( b.PieceMaterial[WHITE] &amp;amp;lt; 400 &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;             b.PieceMaterial[BLACK] &amp;amp;lt; 400 &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;             ( !is_rim[b.KingLoc[WHITE] ] || b.PieceMaterial[BLACK] == 0 ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;             ( !is_rim[b.KingLoc[BLACK] ] || b.PieceMaterial[WHITE] == 0 )    &amp;lt;br/&amp;gt;        )&amp;lt;br/&amp;gt;        return 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* default: no draw spotted */&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; is_rim&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* please note that this recognizer assumes that the position is legal, 
   i.e. side to move is not in check */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isDraw&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* no pawns */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;PawnMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/* both sides have at most one minor piece - to guard against the possibility 
           of a helpmate in the corner, we do not claim an immediate draw if the king
           of the weaker side stands on the edge of the board */&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_rim&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_rim&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;BLACK&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WHITE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* default: no draw spotted */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_recognize&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_recognize&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_recognize includeBody-CPW-Engine_recognize includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_recognize&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_recognize&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 30, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Interior+Node+Recognizer&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Interior Node Recognizer&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 12, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_root</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_root</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_root</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_root</comments>
      <pubDate>Sat, 27 Sep 2008 13:39:35 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:86:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:86 --&gt;&lt;!-- ws:start:WikiTextTocRule:87: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Header&quot;&gt;Header&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:87 --&gt;&lt;!-- ws:start:WikiTextTocRule:88: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#toc1&quot;&gt; &lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:88 --&gt;&lt;!-- ws:start:WikiTextTocRule:89: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:89 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Root&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:82:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Header&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:82 --&gt;Header&lt;/h1&gt;
 &lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/* this structure is meant to include data determining performance&amp;lt;br/&amp;gt;   of the search routine, such as timing method, available time&amp;lt;br/&amp;gt;   or depth, as well as boolean flags for additional heuristics&amp;lt;br/&amp;gt;*/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;struct sSearchDriver {&amp;lt;br/&amp;gt;       int DEPTH;&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;extern sSearchDriver d;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* this structure contains some statistical data about current search */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;struct sSearchStat {&amp;lt;br/&amp;gt;       int nodes;&amp;lt;br/&amp;gt;       int qnodes;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;extern sSearchStat stat;&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* this structure is meant to include data determining performance
   of the search routine, such as timing method, available time
   or depth, as well as boolean flags for additional heuristics
*/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;struct&lt;/span&gt; sSearchDriver &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; DEPTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; sSearchDriver d&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* this structure contains some statistical data about current search */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;struct&lt;/span&gt; sSearchStat &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nodes&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; qnodes&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; sSearchStat stat&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:84:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;!-- ws:end:WikiTextHeadingRule:84 --&gt; &lt;/h1&gt;
 &lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#define MAX_DEPTH 100&amp;lt;br/&amp;gt;#define LEAVES_IN_TT 1&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#define MAX_DEPTH 100&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define LEAVES_IN_TT 1&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/* symbols used to enhance readability */&amp;lt;br/&amp;gt;#define DO_NULL    1&amp;lt;br/&amp;gt;#define NO_NULL    0&amp;lt;br/&amp;gt;#define IS_PV      1&amp;lt;br/&amp;gt;#define NO_PV      0&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* symbols used to enhance readability */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define DO_NULL    1&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define NO_NULL    0&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define IS_PV      1&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define NO_PV      0&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;sSearchDriver sd;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;sSearchDriver sd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int contempt = 0;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; contempt &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;&lt;!-- ws:start:WikiTextCodeRule:6:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;bool time_over = 0;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:6 --&gt;&lt;!-- ws:start:WikiTextCodeRule:7:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;enum ettflag {&amp;lt;br/&amp;gt; TT_EXACT,&amp;lt;br/&amp;gt; TT_ALPHA,&amp;lt;br/&amp;gt; TT_BETA&amp;lt;br/&amp;gt;};&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; ettflag &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 TT_EXACT,
 TT_ALPHA,
 TT_BETA
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:7 --&gt;&lt;!-- ws:start:WikiTextCodeRule:8:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;enum eproto {&amp;lt;br/&amp;gt; PROTO_NOTHING,&amp;lt;br/&amp;gt; PROTO_XBOARD,&amp;lt;br/&amp;gt; PROTO_UCI&amp;lt;br/&amp;gt;} extern mode;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; eproto &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 PROTO_NOTHING,
 PROTO_XBOARD,
 PROTO_UCI
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; mode&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:8 --&gt;&lt;!-- ws:start:WikiTextCodeRule:9:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int search() {&amp;lt;br/&amp;gt; int in_check;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    smove m[256];&amp;lt;br/&amp;gt; int bestmove = -1;&amp;lt;br/&amp;gt; int val = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; ageHistoryTable();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; if ( mode == PROTO_NOTHING ) printSearchHeader();&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; in_check&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    smove m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 ageHistoryTable&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PROTO_NOTHING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; printSearchHeader&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:9 --&gt;&lt;!-- ws:start:WikiTextCodeRule:10:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; for (sd.depth=1; sd.depth&amp;amp;lt;=MAX_DEPTH; sd.depth++) {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt;MAX_DEPTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:10 --&gt;&lt;!-- ws:start:WikiTextCodeRule:11:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if (sd.depth &amp;amp;gt; 1) {&amp;lt;br/&amp;gt;   if (time_over) break;&amp;lt;br/&amp;gt;   if (time_stop_root()) break;&amp;lt;br/&amp;gt;  }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;time_over&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;time_stop_root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:11 --&gt;&lt;!-- ws:start:WikiTextCodeRule:12:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; /* Check  extension is done also at  the  root */&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* Check  extension is done also at  the  root */&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:12 --&gt;&lt;!-- ws:start:WikiTextCodeRule:13:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; in_check = isAttacked( !b.stm, p.KingLoc[b.stm] );&amp;lt;br/&amp;gt; if ( in_check ) ++sd.depth;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; in_check &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, p.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; in_check &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:13 --&gt;&lt;!-- ws:start:WikiTextCodeRule:14:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  int mcount = movegen(m, bestmove);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  int alpha = -INFINITY;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  for ( int i = 0; i &amp;amp;lt; mcount; i++ ) {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mcount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m, bestmove&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INFINITY&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:14 --&gt;&lt;!-- ws:start:WikiTextCodeRule:15:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   movegen_sort(mcount,m,i);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   movegen_sort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mcount,m,i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:15 --&gt;&lt;!-- ws:start:WikiTextCodeRule:16:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   if ( m[i].piece_cap == PIECE_KING ) {&amp;lt;br/&amp;gt;    alpha = INFINITY;&amp;lt;br/&amp;gt;    bestmove = m[i].id;&amp;lt;br/&amp;gt;   }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_KING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INFINITY&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:16 --&gt;&lt;!-- ws:start:WikiTextCodeRule:17:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   //info_currmove(m[i],i);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   &lt;span class=&quot;co1&quot;&gt;//info_currmove(m[i],i);&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:17 --&gt;&lt;!-- ws:start:WikiTextCodeRule:18:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   move_make(m[i]);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:18 --&gt;&lt;!-- ws:start:WikiTextCodeRule:19:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   /* the &amp;amp;quot;if&amp;amp;quot; line introduces PVS at root */&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   &lt;span class=&quot;coMULTI&quot;&gt;/* the &amp;quot;if&amp;quot; line introduces PVS at root */&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:19 --&gt;&lt;!-- ws:start:WikiTextCodeRule:20:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   if ( i == 0 || -AlphaBeta( sd.depth-1, -alpha-1, -alpha, 1, 0 ) &amp;amp;gt; alpha )&amp;lt;br/&amp;gt;      val = -AlphaBeta(sd.depth-1, -INFINITY, -alpha, 1, 1);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INFINITY, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:20 --&gt;&lt;!-- ws:start:WikiTextCodeRule:21:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   move_unmake(m[i]);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:21 --&gt;&lt;!-- ws:start:WikiTextCodeRule:22:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   if (time_over) break;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;time_over&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:22 --&gt;&lt;!-- ws:start:WikiTextCodeRule:23:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   if ( val &amp;amp;gt; alpha ) {&amp;lt;br/&amp;gt;    alpha = val;&amp;lt;br/&amp;gt;    bestmove = m[i].id;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:23 --&gt;&lt;!-- ws:start:WikiTextCodeRule:24:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    tt_save( sd.depth, alpha, TT_ALPHA, m[i].id );&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, alpha, TT_ALPHA, m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:24 --&gt;&lt;!-- ws:start:WikiTextCodeRule:25:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    info_pv( val );&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    info_pv&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:25 --&gt;&lt;!-- ws:start:WikiTextCodeRule:26:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  tt_save( sd.depth, alpha, TT_EXACT, bestmove );&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, alpha, TT_EXACT, bestmove &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:26 --&gt;&lt;!-- ws:start:WikiTextCodeRule:27:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:27 --&gt;&lt;!-- ws:start:WikiTextCodeRule:28:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; int mcount = movegen(m, -1);&amp;lt;br/&amp;gt; for ( int i=0; i&amp;amp;lt;mcount; i++ ) {&amp;lt;br/&amp;gt;  if ( m[i].id == bestmove )&amp;lt;br/&amp;gt;   com_sendmove( m[bestmove] );&amp;lt;br/&amp;gt; }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mcount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; bestmove &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   com_sendmove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;bestmove&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:28 --&gt;&lt;!-- ws:start:WikiTextCodeRule:29:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int AlphaBeta( int depth, int alpha, int beta, int can_null, int is_pv ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; int  val;&amp;lt;br/&amp;gt; char bestmove;&amp;lt;br/&amp;gt; char tt_move;&amp;lt;br/&amp;gt; int  tt_flag = TT_ALPHA;&amp;lt;br/&amp;gt; int  in_check;&amp;lt;br/&amp;gt; int  legal_move = 0;&amp;lt;br/&amp;gt; int  raised_alpha = 0;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; depth, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; alpha, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; beta, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; can_null, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; is_pv &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; bestmove&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; tt_move&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  tt_flag &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TT_ALPHA&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  in_check&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  legal_move &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  raised_alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:29 --&gt;&lt;!-- ws:start:WikiTextCodeRule:30:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; /* Check for timeout */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; if ( !time_over &amp;amp;amp;&amp;amp;amp; !(sd.nodes &amp;amp;amp; 0x3FF) )&amp;lt;br/&amp;gt;  time_over = time_stop();&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* Check for timeout */&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;time_over &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0x3FF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; time_stop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:30 --&gt;&lt;!-- ws:start:WikiTextCodeRule:31:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; /***************************************************************&amp;lt;br/&amp;gt; *  Are we in check? If so, extend. It also means that program  *&amp;lt;br/&amp;gt; *  will never enter quiescence search while in check.          *&amp;lt;br/&amp;gt; ***************************************************************/&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************
 *  Are we in check? If so, extend. It also means that program  *
 *  will never enter quiescence search while in check.          *
 ***************************************************************/&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:31 --&gt;&lt;!-- ws:start:WikiTextCodeRule:32:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; in_check = ( isAttacked( !b.stm, p.KingLoc[b.stm] ) );&amp;lt;br/&amp;gt; if ( in_check ) ++depth;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; in_check &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, p.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; in_check &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:32 --&gt;&lt;!-- ws:start:WikiTextCodeRule:33:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; /***************************************************************&amp;lt;br/&amp;gt; *  At leaf nodes we do quiescence search (captures only)       *&amp;lt;br/&amp;gt; *  to make sure that only relatively quiet positions           *&amp;lt;br/&amp;gt; *  with no hanging pieces will be evaluated.                   *&amp;lt;br/&amp;gt; ***************************************************************/&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************
 *  At leaf nodes we do quiescence search (captures only)       *
 *  to make sure that only relatively quiet positions           *
 *  with no hanging pieces will be evaluated.                   *
 ***************************************************************/&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:33 --&gt;&lt;!-- ws:start:WikiTextCodeRule:34:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    if ( depth == 0 ) {&amp;lt;br/&amp;gt;  val = Quiesce(alpha, beta);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; Quiesce&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha, beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:34 --&gt;&lt;!-- ws:start:WikiTextCodeRule:35:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if ( LEAVES_IN_TT )&amp;lt;br/&amp;gt;   tt_saveLeaf( alpha, beta, val );&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; LEAVES_IN_TT &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   tt_saveLeaf&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; alpha, beta, val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:35 --&gt;&lt;!-- ws:start:WikiTextCodeRule:36:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  return val;&amp;lt;br/&amp;gt;    }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:36 --&gt;&lt;!-- ws:start:WikiTextCodeRule:37:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; sd.nodes ++;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:37 --&gt;&lt;!-- ws:start:WikiTextCodeRule:38:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; if ( isRepetition() ) return contempt;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isRepetition&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; contempt&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:38 --&gt;&lt;!-- ws:start:WikiTextCodeRule:39:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; if ( ( val = tt_probe(depth, alpha, beta, &amp;amp;amp;tt_move) ) != INVALID )&amp;lt;br/&amp;gt;  return val;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; /***************************************************************&amp;lt;br/&amp;gt; *  Here  we introduce  null move pruning. It  means  allowing  *&amp;lt;br/&amp;gt; *  opponent  to  execute two moves in a row,  i.e.  capturing  *&amp;lt;br/&amp;gt; *  something  and escaping a recapture. If this cannot  wreck  *&amp;lt;br/&amp;gt; *  our  position,  then it is so good that there&#039;s  no  point  *&amp;lt;br/&amp;gt; *  in searching further. The flag &amp;amp;quot;can_null&amp;amp;quot; ensures we don&#039;t  *&amp;lt;br/&amp;gt; *  do  two null moves in a row. Null move is not used in  the  *&amp;lt;br/&amp;gt; *  endgame because of the risk of zugzwang.                    *&amp;lt;br/&amp;gt; ***************************************************************/&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; tt_probe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;depth, alpha, beta, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;tt_move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INVALID &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************
 *  Here  we introduce  null move pruning. It  means  allowing  *
 *  opponent  to  execute two moves in a row,  i.e.  capturing  *
 *  something  and escaping a recapture. If this cannot  wreck  *
 *  our  position,  then it is so good that there&#039;s  no  point  *
 *  in searching further. The flag &amp;quot;can_null&amp;quot; ensures we don&#039;t  *
 *  do  two null moves in a row. Null move is not used in  the  *
 *  endgame because of the risk of zugzwang.                    *
 ***************************************************************/&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:39 --&gt;&lt;!-- ws:start:WikiTextCodeRule:40:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; if ( ( depth &amp;amp;gt; 2) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;   ( can_null ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;   ( eval(alpha, beta) &amp;amp;gt; beta ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;   ( p.PieceMaterial[b.stm] &amp;amp;gt; 1300 ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;   ( !in_check )  )&amp;lt;br/&amp;gt;    {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; can_null &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; eval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha, beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; p.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1300&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;in_check &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:40 --&gt;&lt;!-- ws:start:WikiTextCodeRule:41:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  char ep_old = b.ep;&amp;lt;br/&amp;gt;  move_makeNull();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  val = -AlphaBeta( depth - 3, -beta, -beta+1, NO_NULL, NO_PV );&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; ep_old &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  move_makeNull&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, NO_NULL, NO_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:41 --&gt;&lt;!-- ws:start:WikiTextCodeRule:42:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  move_unmakeNull(ep_old);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  move_unmakeNull&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ep_old&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:42 --&gt;&lt;!-- ws:start:WikiTextCodeRule:43:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if ( time_over ) return 0;&amp;lt;br/&amp;gt;  if (val &amp;amp;gt;= beta) return beta;&amp;lt;br/&amp;gt; }&amp;lt;br/&amp;gt; /* end of null move code */&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; time_over &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; beta&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
 &lt;span class=&quot;coMULTI&quot;&gt;/* end of null move code */&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:43 --&gt;&lt;!-- ws:start:WikiTextCodeRule:44:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    smove m[256];&amp;lt;br/&amp;gt;    int mcount = movegen( m, tt_move );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;#ifdef USE_KILLERS&amp;lt;br/&amp;gt; /* reorder killer moves */&amp;lt;br/&amp;gt; for ( int j=1; j&amp;amp;lt;mcount; j++ ) {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
    smove m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mcount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m, tt_move &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#ifdef USE_KILLERS&lt;/span&gt;
 &lt;span class=&quot;coMULTI&quot;&gt;/* reorder killer moves */&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; j&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:44 --&gt;&lt;!-- ws:start:WikiTextCodeRule:45:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if ( ( m[j].from == sd.killers[depth][1].from ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;    ( m[j].to   == sd.killers[depth][1].to   ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;    ( m[j].score &amp;amp;lt; SORT_KILL-1 )  // don&#039;t lower the move value&amp;lt;br/&amp;gt;   )&amp;lt;br/&amp;gt;   m[j].score = SORT_KILL-1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  if ( ( m[j].from == sd.killers[depth][0].from ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;    ( m[j].to   == sd.killers[depth][0].to   ) &amp;amp;amp;&amp;amp;amp;&amp;lt;br/&amp;gt;    ( m[j].score &amp;amp;lt; SORT_KILL )&amp;lt;br/&amp;gt;   )&amp;lt;br/&amp;gt;   m[j].score = SORT_KILL;&amp;lt;br/&amp;gt; }&amp;lt;br/&amp;gt;#endif&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; SORT_KILL&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// don&#039;t lower the move value&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_KILL&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; SORT_KILL &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_KILL&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:45 --&gt;&lt;!-- ws:start:WikiTextCodeRule:46:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; bestmove = m[0].id;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:46 --&gt;&lt;!-- ws:start:WikiTextCodeRule:47:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    /**************************************************&amp;lt;br/&amp;gt; *  Now it&#039;s time to loop through the move list    *&amp;lt;br/&amp;gt; ***************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; for (int i = 0; i &amp;amp;lt; mcount; i++) {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    &lt;span class=&quot;coMULTI&quot;&gt;/**************************************************
 *  Now it&#039;s time to loop through the move list    *
 ***************************************************/&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:47 --&gt;&lt;!-- ws:start:WikiTextCodeRule:48:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  movegen_sort( mcount, m, i );&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  movegen_sort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mcount, m, i &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:48 --&gt;&lt;!-- ws:start:WikiTextCodeRule:49:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if ( m[i].piece_cap == PIECE_KING ) return INFINITY;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_KING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; INFINITY&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:49 --&gt;&lt;!-- ws:start:WikiTextCodeRule:50:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  // problem: we do this test several times, even though&amp;lt;br/&amp;gt;  // king capture is sorted fist&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  move_make( m[i] );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /*******************************************************************&amp;lt;br/&amp;gt;  *  The code below introduces principle variation search. It  means *&amp;lt;br/&amp;gt;  *  that once we are in a PV-node (indicated by IS_PV flag) and  we *&amp;lt;br/&amp;gt;  *  have  found a move that raises alpha, we assume that  the  rest *&amp;lt;br/&amp;gt;  *  of moves ought to be refuted. This is done  relatively  cheaply *&amp;lt;br/&amp;gt;  *  by using  a null-window search centered around alpha.  Only  if *&amp;lt;br/&amp;gt;  *  this search fails high, we are forced to do a real one. This is *&amp;lt;br/&amp;gt;  *  not done when the remaining depth is less than 2 plies.         *&amp;lt;br/&amp;gt;  *******************************************************************/&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;co1&quot;&gt;// problem: we do this test several times, even though&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// king capture is sorted fist&lt;/span&gt;
&amp;nbsp;
  move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/*******************************************************************
  *  The code below introduces principle variation search. It  means *
  *  that once we are in a PV-node (indicated by IS_PV flag) and  we *
  *  have  found a move that raises alpha, we assume that  the  rest *
  *  of moves ought to be refuted. This is done  relatively  cheaply *
  *  by using  a null-window search centered around alpha.  Only  if *
  *  this search fails high, we are forced to do a real one. This is *
  *  not done when the remaining depth is less than 2 plies.         *
  *******************************************************************/&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:50 --&gt;&lt;!-- ws:start:WikiTextCodeRule:51:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if (!is_pv || depth &amp;amp;lt; 3) // non-pv node or low depth - don&#039;t use pvs&amp;lt;br/&amp;gt;      val = -AlphaBeta( depth-1, -beta, -alpha, DO_NULL, NO_PV );&amp;lt;br/&amp;gt;        else {&amp;lt;br/&amp;gt;           if (!raised_alpha) // alpha isn&#039;t raised - full width search&amp;lt;br/&amp;gt;               val = -AlphaBeta( depth-1, -beta, -alpha, DO_NULL, IS_PV );&amp;lt;br/&amp;gt;            else {&amp;lt;br/&amp;gt;               // first try to refute a move - if this fails, do a real search&amp;lt;br/&amp;gt;               if ( -AlphaBeta( depth-1, -alpha-1, -alpha, DO_NULL, NO_PV ) &amp;amp;gt; alpha )&amp;lt;br/&amp;gt;                  val = -AlphaBeta( depth-1, -beta, -alpha, DO_NULL, IS_PV );&amp;lt;br/&amp;gt;           }&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        move_unmake(m[i]);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_pv &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; depth &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// non-pv node or low depth - don&#039;t use pvs&lt;/span&gt;
      val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, NO_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;raised_alpha&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// alpha isn&#039;t raised - full width search&lt;/span&gt;
               val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, IS_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
               &lt;span class=&quot;co1&quot;&gt;// first try to refute a move - if this fails, do a real search&lt;/span&gt;
               &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, NO_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                  val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;AlphaBeta&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, IS_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:51 --&gt;&lt;!-- ws:start:WikiTextCodeRule:52:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  /********************************************************************&amp;lt;br/&amp;gt;  *  If  the  move doesn&#039;t return -INFINITY, it means that the King   *&amp;lt;br/&amp;gt;  *  couldn&#039;t be captured immediately. So the move was legal. In this *&amp;lt;br/&amp;gt;  *  case we increase the legal_move counter, to look afterwards,     *&amp;lt;br/&amp;gt;  *  whether there were any legal moves on the board at all.          *                                      *&amp;lt;br/&amp;gt;  ********************************************************************/&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
  *  If  the  move doesn&#039;t return -INFINITY, it means that the King   *
  *  couldn&#039;t be captured immediately. So the move was legal. In this *
  *  case we increase the legal_move counter, to look afterwards,     *
  *  whether there were any legal moves on the board at all.          *                                      *
  ********************************************************************/&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:52 --&gt;&lt;!-- ws:start:WikiTextCodeRule:53:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  legal_move += ( val != -INFINITY );&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  legal_move &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INFINITY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:53 --&gt;&lt;!-- ws:start:WikiTextCodeRule:54:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if ( time_over ) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /********************************************************************&amp;lt;br/&amp;gt;  *  Beta cutoff - the position is so good that the score will not    *&amp;lt;br/&amp;gt;  *  be accepted  one ply below.                                      *&amp;lt;br/&amp;gt;  ********************************************************************/&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; time_over &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
  *  Beta cutoff - the position is so good that the score will not    *
  *  be accepted  one ply below.                                      *
  ********************************************************************/&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:54 --&gt;&lt;!-- ws:start:WikiTextCodeRule:55:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;        if ( val &amp;amp;gt;= beta ) {&amp;lt;br/&amp;gt;   bestmove = m[i].id; // bugfix 2008-07-18&amp;lt;br/&amp;gt;   sd.history [m[i].from] [m[i].to] += depth*depth;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;#ifdef USE_KILLERS&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   /* if a move isn&#039;t a capture, save it as a killer move */&amp;lt;br/&amp;gt;   if ( m[i].piece_cap == PIECE_EMPTY ) {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// bugfix 2008-07-18&lt;/span&gt;
   sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; depth&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#ifdef USE_KILLERS&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;coMULTI&quot;&gt;/* if a move isn&#039;t a capture, save it as a killer move */&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:55 --&gt;&lt;!-- ws:start:WikiTextCodeRule:56:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    /* make sure killer moves are different&amp;lt;br/&amp;gt;       before saving secondary killer move */&amp;lt;br/&amp;gt;    if ( m[i].from != sd.killers[depth][0].from ||&amp;lt;br/&amp;gt;      m[i].to   != sd.killers[depth][0].to&amp;lt;br/&amp;gt;       )&amp;lt;br/&amp;gt;                   sd.killers[depth][1] = sd.killers[depth][0];&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    &lt;span class=&quot;coMULTI&quot;&gt;/* make sure killer moves are different
       before saving secondary killer move */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
      m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                   sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:56 --&gt;&lt;!-- ws:start:WikiTextCodeRule:57:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    /* save primary killer move */&amp;lt;br/&amp;gt;       sd.killers[depth][0] = m[i];&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;#endif&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    &lt;span class=&quot;coMULTI&quot;&gt;/* save primary killer move */&lt;/span&gt;
       sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:57 --&gt;&lt;!-- ws:start:WikiTextCodeRule:58:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;   tt_save(depth, beta, TT_BETA, bestmove);&amp;lt;br/&amp;gt;            return beta;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  /****************************************************************&amp;lt;br/&amp;gt;  *  We  can  improve  over alpha, so we change the  node  value  *&amp;lt;br/&amp;gt;  *  together with the expected move. Also the raised_alpha flag, *&amp;lt;br/&amp;gt;  *  used to decide about PVS, is set.                            *&amp;lt;br/&amp;gt;  ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;if ( val &amp;amp;gt; alpha ) {&amp;lt;br/&amp;gt;   raised_alpha = 1;&amp;lt;br/&amp;gt;   tt_flag = TT_EXACT;&amp;lt;br/&amp;gt;            alpha = val;&amp;lt;br/&amp;gt;   bestmove = m[i].id;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    }   // end of looping through the moves&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;   tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;depth, beta, TT_BETA, bestmove&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; beta&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
  *  We  can  improve  over alpha, so we change the  node  value  *
  *  together with the expected move. Also the raised_alpha flag, *
  *  used to decide about PVS, is set.                            *
  ****************************************************************/&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   raised_alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   tt_flag &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TT_EXACT&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;// end of looping through the moves&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:58 --&gt;&lt;!-- ws:start:WikiTextCodeRule:59:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; /* Checkmate and stalemate detection */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; if ( !legal_move ) {&amp;lt;br/&amp;gt;  bestmove = -1;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* Checkmate and stalemate detection */&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;legal_move &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:59 --&gt;&lt;!-- ws:start:WikiTextCodeRule:60:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  if ( in_check )&amp;lt;br/&amp;gt;   alpha = -INFINITY + sd.depth - depth;&amp;lt;br/&amp;gt;  else&amp;lt;br/&amp;gt;   alpha = contempt;&amp;lt;br/&amp;gt; }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; in_check &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INFINITY &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
   alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; contempt&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:60 --&gt;&lt;!-- ws:start:WikiTextCodeRule:61:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; /* tt_save() does not save anything when the search is timed out */&amp;lt;br/&amp;gt;    tt_save( depth, alpha, tt_flag, bestmove );&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* tt_save() does not save anything when the search is timed out */&lt;/span&gt;
    tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth, alpha, tt_flag, bestmove &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:61 --&gt;&lt;!-- ws:start:WikiTextCodeRule:62:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    return alpha;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; alpha&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:62 --&gt;&lt;!-- ws:start:WikiTextCodeRule:63:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;[[code]]&amp;lt;br/&amp;gt;[[code format=&amp;amp;quot;cpp&amp;amp;quot;]]&amp;lt;br/&amp;gt;int info_currmove(smove m, int nr) {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;code&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;code format&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;cpp&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; info_currmove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:63 --&gt;&lt;!-- ws:start:WikiTextCodeRule:64:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; switch(mode) {&amp;lt;br/&amp;gt; case PROTO_UCI:&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PROTO_UCI&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:64 --&gt;&lt;!-- ws:start:WikiTextCodeRule:65:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  char buffer[64];&amp;lt;br/&amp;gt;  char move[6];&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; buffer&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; move&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:65 --&gt;&lt;!-- ws:start:WikiTextCodeRule:66:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  algebraic_writemove(m,move);&amp;lt;br/&amp;gt;  sprintf(buffer, &amp;amp;quot;info depth %d currmove %s currmovenumber %d&amp;amp;quot;, sd.depth, move, nr);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  algebraic_writemove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m,move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer, &lt;span class=&quot;st0&quot;&gt;&amp;quot;info depth %d currmove %s currmovenumber %d&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, move, nr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:66 --&gt;&lt;!-- ws:start:WikiTextCodeRule:67:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  com_send(buffer);&amp;lt;br/&amp;gt; }&amp;lt;br/&amp;gt; return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:67 --&gt;&lt;!-- ws:start:WikiTextCodeRule:68:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int info_pv( int val ) {&amp;lt;br/&amp;gt; char buffer[2048];&amp;lt;br/&amp;gt; char score[10];&amp;lt;br/&amp;gt; char pv[2048];&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; info_pv&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; buffer&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; score&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; pv&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:68 --&gt;&lt;!-- ws:start:WikiTextCodeRule:69:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; if (abs( val ) &amp;amp;lt; INFINITY - 2000) {&amp;lt;br/&amp;gt;  sprintf( score,&amp;amp;quot;cp %d&amp;amp;quot;, val );&amp;lt;br/&amp;gt; } else {&amp;lt;br/&amp;gt;  //the mating value is returned in moves not plies&amp;lt;br/&amp;gt;  if (val &amp;amp;gt; 0)&amp;lt;br/&amp;gt;   sprintf( score,&amp;amp;quot;mate %d&amp;amp;quot;,(INFINITY - val+1)/2 );&amp;lt;br/&amp;gt;  else&amp;lt;br/&amp;gt;   sprintf( score,&amp;amp;quot;mate %d&amp;amp;quot;,(-INFINITY - val+1)/2 );&amp;lt;br/&amp;gt; }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; INFINITY &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; score,&lt;span class=&quot;st0&quot;&gt;&amp;quot;cp %d&amp;quot;&lt;/span&gt;, val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//the mating value is returned in moves not plies&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; score,&lt;span class=&quot;st0&quot;&gt;&amp;quot;mate %d&amp;quot;&lt;/span&gt;,&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;INFINITY &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; val&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; score,&lt;span class=&quot;st0&quot;&gt;&amp;quot;mate %d&amp;quot;&lt;/span&gt;,&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INFINITY &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; val&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:69 --&gt;&lt;!-- ws:start:WikiTextCodeRule:70:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; unsigned int nodes = (unsigned int) sd.nodes;&amp;lt;br/&amp;gt; unsigned int time = gettime() - sd.starttime + 1;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nodes &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:70 --&gt;&lt;!-- ws:start:WikiTextCodeRule:71:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; util_pv(pv);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; util_pv&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:71 --&gt;&lt;!-- ws:start:WikiTextCodeRule:72:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;    if ( mode == PROTO_NOTHING )&amp;lt;br/&amp;gt;  sprintf(buffer, &amp;amp;quot; %2d. %9d  %5d %5d %s&amp;amp;quot;, sd.depth, nodes, time/10, val, pv);&amp;lt;br/&amp;gt; else&amp;lt;br/&amp;gt;       sprintf(buffer, &amp;amp;quot;info depth %d score %s time %u nodes %u nps %u pv %s&amp;amp;quot;, sd.depth, score, time, nodes, countNps(nodes, time), pv);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PROTO_NOTHING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer, &lt;span class=&quot;st0&quot;&gt;&amp;quot; %2d. %9d  %5d %5d %s&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, nodes, &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, val, pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
       &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer, &lt;span class=&quot;st0&quot;&gt;&amp;quot;info depth %d score %s time %u nodes %u nps %u pv %s&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, score, &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;, nodes, countNps&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nodes, &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:72 --&gt;&lt;!-- ws:start:WikiTextCodeRule:73:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; com_send(buffer);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:73 --&gt;&lt;!-- ws:start:WikiTextCodeRule:74:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:74 --&gt;&lt;!-- ws:start:WikiTextCodeRule:75:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/* this function guards against overflow and allows to display&amp;lt;br/&amp;gt;   correct nps for longer searches. */&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* this function guards against overflow and allows to display
   correct nps for longer searches. */&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:75 --&gt;&lt;!-- ws:start:WikiTextCodeRule:76:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;unsigned int countNps(unsigned int nodes, unsigned int time) {&amp;lt;br/&amp;gt;    if ( time &amp;amp;gt; 20000 )&amp;lt;br/&amp;gt;  return nodes / (time/1000);&amp;lt;br/&amp;gt; else&amp;lt;br/&amp;gt;     return (nodes*1000) / time;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; countNps&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nodes, &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20000&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; nodes &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nodes&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:76 --&gt;&lt;!-- ws:start:WikiTextCodeRule:77:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int isRepetition() {&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isRepetition&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:77 --&gt;&lt;!-- ws:start:WikiTextCodeRule:78:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; for (int i=0; i &amp;amp;lt; b.rep_index; i++) {&amp;lt;br/&amp;gt;  if (b.rep_stack[i] == b.hash)&amp;lt;br/&amp;gt;   return 1;&amp;lt;br/&amp;gt; }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;rep_stack&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:78 --&gt;&lt;!-- ws:start:WikiTextCodeRule:79:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; return 0;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:79 --&gt;&lt;!-- ws:start:WikiTextCodeRule:80:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;void clearHistoryTable() {&amp;lt;br/&amp;gt;     for (int i = 0; i &amp;amp;lt; 128; i++)&amp;lt;br/&amp;gt;   for (int j = 0; j &amp;amp;lt; 128; j++) {&amp;lt;br/&amp;gt;             sd.history[i][j] = 0;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; clearHistoryTable&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
             sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:80 --&gt;&lt;!-- ws:start:WikiTextCodeRule:81:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;void ageHistoryTable() {&amp;lt;br/&amp;gt;     for (int i = 0; i &amp;amp;lt; 128; i++)&amp;lt;br/&amp;gt;   for (int j = 0; j &amp;amp;lt; 128; j++) {&amp;lt;br/&amp;gt;             sd.history[i][j] = sd.history[i][j] / 8;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; ageHistoryTable&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
             sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:81 --&gt;&lt;br /&gt;
External calls:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_movegen%280x88%29&quot;&gt;int movegen();&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_move%280x88%29&quot;&gt;int move_make(move);&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_move%280x88%29&quot;&gt;int move_unmake(move);&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>CPW-Engine_search</title>
      <link>https://chessprogramming.wikispaces.com/CPW-Engine_search</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/CPW-Engine_search</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/CPW-Engine_search</comments>
      <pubDate>Sat, 04 Feb 2017 16:20:18 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:8:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:8 --&gt;&lt;!-- ws:start:WikiTextTocRule:9: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Search&quot;&gt;Search&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:9 --&gt;&lt;!-- ws:start:WikiTextTocRule:10: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:10 --&gt;&lt;!-- ws:start:WikiTextTocRule:11: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:11 --&gt;&lt;!-- ws:start:WikiTextTocRule:12: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:12 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;CPW-Engine&lt;/a&gt; * Search&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
For function definitions, see &lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine_search_h&quot;&gt;CPW-Engine_search_h&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Search&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Search&quot;&gt;Search&lt;/a&gt;&lt;/h1&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;amp;quot;stdafx.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;search.h&amp;amp;quot;&amp;lt;br/&amp;gt;#include &amp;amp;quot;transposition.h&amp;amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;#define MAX_DEPTH 100&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* symbols used to enhance readability */&amp;lt;br/&amp;gt;#define DO_NULL    1&amp;lt;br/&amp;gt;#define NO_NULL    0&amp;lt;br/&amp;gt;#define IS_PV      1&amp;lt;br/&amp;gt;#define NO_PV      0&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;sSearchDriver sd;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int draw_opening = -10; // middlegame draw value&amp;lt;br/&amp;gt;int draw_endgame = 0;   // endgame draw value&amp;lt;br/&amp;gt;int ASPIRATION   = 50;  // size of the aspiration window ( val-ASPITATION, val+ASPIRATION )&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;bool time_over = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;enum eproto {&amp;lt;br/&amp;gt;    PROTO_NOTHING,&amp;lt;br/&amp;gt;    PROTO_XBOARD,&amp;lt;br/&amp;gt;    PROTO_UCI&amp;lt;br/&amp;gt;} extern mode; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U8 bestmove;         // move id passed between iterations for sorting purposes&amp;lt;br/&amp;gt;smove move_to_make;     // move to be returned when search runs out of time&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/***************************************************************&amp;lt;br/&amp;gt;*  search_run() is the interface of all the search functions,  *&amp;lt;br/&amp;gt;*  the only function called outside search.cpp. It does some   *&amp;lt;br/&amp;gt;*  preparatory work, and then calls search_iterate();          *&amp;lt;br/&amp;gt;***************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void search_run() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( chronos.flags &amp;amp;amp; (FTIME | FINC | FMOVESTOGO) ) {&amp;lt;br/&amp;gt;        if ( getBookMove(BOOK_BROAD) ) return;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    search_clearDriver(); &amp;lt;br/&amp;gt;    time_calc_movetime();&amp;lt;br/&amp;gt;    ageHistoryTable();&amp;lt;br/&amp;gt;    if ( mode == PROTO_NOTHING ) printSearchHeader();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    search_iterate();&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void search_clearDriver() {&amp;lt;br/&amp;gt;     sd.myside = b.stm;         // remember color - needed in contempt()&amp;lt;br/&amp;gt;     sd.starttime = gettime();&amp;lt;br/&amp;gt;     sd.movetime = 0;&amp;lt;br/&amp;gt;     sd.depth = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;     // now clear all the statistical data&amp;lt;br/&amp;gt;     sd.nodes = 0;&amp;lt;br/&amp;gt;     sd.q_nodes = 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**************************************************************&amp;lt;br/&amp;gt;*  search_iterate() calls search_root() with increasing depth *&amp;lt;br/&amp;gt;*  until allocated time is exhausted.                         *&amp;lt;br/&amp;gt;**************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void search_iterate() {&amp;lt;br/&amp;gt;     int val, temp;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // check the exact number of legal moves in the current position&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    int move_count = move_countLegal();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // do a full-window 1-ply search to get the first estimate of val &amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    sd.depth = 1;&amp;lt;br/&amp;gt;    val = search_root( sd.depth, -INF, INF );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // main loop, increasing deph in steps of 1&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (sd.depth=2; sd.depth&amp;amp;lt;=MAX_DEPTH; sd.depth++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        // breaking conditions - either expired time&amp;lt;br/&amp;gt;        // or just one legal reply and position searched to depth 4&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( time_stop_root() || time_over  ) break;&amp;lt;br/&amp;gt;        if ( move_count == 1  &amp;amp;amp;&amp;amp;amp; sd.depth == 5 ) break;&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        // this function deals with aspiration window&amp;lt;br/&amp;gt;        val = search_widen(sd.depth, val);&amp;lt;br/&amp;gt;    } &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    // after the loop has finished, send the move to the interface&amp;lt;br/&amp;gt;    com_sendmove(move_to_make);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int search_widen(int depth, int val) {&amp;lt;br/&amp;gt;    int temp = val, &amp;lt;br/&amp;gt;    alpha = val - 50,&amp;lt;br/&amp;gt;    beta  = val + 50;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    temp = search_root(sd.depth, alpha, beta);&amp;lt;br/&amp;gt;    if (temp &amp;amp;lt;= alpha || temp &amp;amp;gt;= beta)&amp;lt;br/&amp;gt;        temp = search_root(sd.depth, -INF, INF);&amp;lt;br/&amp;gt;    return temp;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int search_root( U8 depth, int alpha, int beta ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int flagInCheck;&amp;lt;br/&amp;gt;    smove movelist[256];&amp;lt;br/&amp;gt;    int val = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    U8 currmove_legal = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* Check  extension is done also at  the  root */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    flagInCheck = isAttacked( !b.stm, b.KingLoc[b.stm] );&amp;lt;br/&amp;gt;    if ( flagInCheck ) ++depth;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    U8 mcount = movegen(movelist, bestmove);&amp;lt;br/&amp;gt;      &amp;lt;br/&amp;gt;    for ( U8 i = 0; i &amp;amp;lt; mcount; i++ ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        movegen_sort( mcount, movelist, i);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( movelist[i].piece_cap == KING ) {&amp;lt;br/&amp;gt;            alpha = INF;&amp;lt;br/&amp;gt;            bestmove = movelist[i].id;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        move_make( movelist[i] );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        // filter out illegal moves&amp;lt;br/&amp;gt;        if (isAttacked(b.stm, b.KingLoc[!b.stm])) {&amp;lt;br/&amp;gt;            move_unmake( movelist[i] );&amp;lt;br/&amp;gt;            continue; &amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    //    if ( mode == PROTO_UCI ) &amp;lt;br/&amp;gt;    //        info_currmove( movelist[i], currmove_legal ); &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        currmove_legal ++; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /* the &amp;amp;quot;if&amp;amp;quot; clause introduces PVS at root */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( ( i == 0 ) || &amp;lt;br/&amp;gt;             ( -Search( depth-1, 0, -alpha-1, -alpha, DO_NULL, NO_PV ) &amp;amp;gt; alpha ) )&amp;lt;br/&amp;gt;           val = -Search(depth-1, 0, -beta, -alpha, DO_NULL, IS_PV );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        move_unmake( movelist[i] );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (time_over) break;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( val &amp;amp;gt; alpha ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;           bestmove = movelist[i].id;&amp;lt;br/&amp;gt;            move_to_make = movelist[i];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;           if ( val &amp;amp;gt; beta ) { // should be &amp;amp;gt;=, see post&amp;lt;br/&amp;gt;              tt_save(depth, beta, TT_BETA, bestmove);&amp;lt;br/&amp;gt;              info_pv( beta );&amp;lt;br/&amp;gt;              return beta;&amp;lt;br/&amp;gt;           }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;           alpha = val;&amp;lt;br/&amp;gt;           tt_save( depth, alpha, TT_ALPHA, bestmove ); &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;           info_pv( val );&amp;lt;br/&amp;gt;        } // changing node value finished&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    tt_save( depth, alpha, TT_EXACT, bestmove ); &amp;lt;br/&amp;gt;    return alpha;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int Search( U8 depth, U8 ply, int alpha, int beta, int can_null, int is_pv ) {&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    int  val = -INF;&amp;lt;br/&amp;gt;    char bestmove;&amp;lt;br/&amp;gt;    char tt_move = INVALID;&amp;lt;br/&amp;gt;    char tt_flag = TT_ALPHA;&amp;lt;br/&amp;gt;    int  flagInCheck;&amp;lt;br/&amp;gt;    int  legal_move = 0;&amp;lt;br/&amp;gt;    int  raised_alpha = 0;&amp;lt;br/&amp;gt;    int  f_prune = 0;&amp;lt;br/&amp;gt;    int  reduction_depth = 0;&amp;lt;br/&amp;gt;    int  moves_tried = 0;&amp;lt;br/&amp;gt;    int  new_depth;&amp;lt;br/&amp;gt;    int  mate_value = INF - ply; // will be used in mate distance pruning&amp;lt;br/&amp;gt;    smove move;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************  &amp;lt;br/&amp;gt;    *  Probably later we will want to probe the transposition table.        *&amp;lt;br/&amp;gt;    *  Tell the cpu to prepare for that event. This is just a minor         *&amp;lt;br/&amp;gt;    *  speed optimization and program would run fine without that.          *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    _mm_prefetch((char *)&amp;amp;amp;tt[b.hash &amp;amp;amp; tt_size], _MM_HINT_NTA);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************&amp;lt;br/&amp;gt;    * Check for timeout. This is quite time-consuming, so we do it only     *&amp;lt;br/&amp;gt;    * every so often. The side effect is that if we want  to limit search   *&amp;lt;br/&amp;gt;    * by number of nodes, it will be slightly inexact.                      *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    if ( !time_over &amp;amp;amp;&amp;amp;amp; !(sd.nodes &amp;amp;amp; 4095) )&amp;lt;br/&amp;gt;        time_over = time_stop();&amp;lt;br/&amp;gt;    if ( time_over ) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************&amp;lt;br/&amp;gt;    * MATE DISTANCE PRUNING - a minor improvement that helps to shave off   *&amp;lt;br/&amp;gt;    * some nodes when the checkmate is near. Basically it prevents looking  *&amp;lt;br/&amp;gt;    * for checkmates taking longer than one we have already found. No Elo   *&amp;lt;br/&amp;gt;    * gain expected, but it&#039;s a nice feature. Don&#039;t use it at the root,     *&amp;lt;br/&amp;gt;    * since  this code  doesn&#039;t return a move, only a value.                *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (alpha &amp;amp;lt; -mate_value) alpha = -mate_value;&amp;lt;br/&amp;gt;    if (beta &amp;amp;gt; mate_value - 1) beta = mate_value - 1;&amp;lt;br/&amp;gt;    if (alpha &amp;amp;gt;= beta) return alpha;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************ &amp;lt;br/&amp;gt;    *  Are we in check? If so, extend. It also means that program will      *&amp;lt;br/&amp;gt;    *  never enter quiescence search while in check.                        *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    flagInCheck = ( isAttacked( !b.stm, b.KingLoc[b.stm] ) );&amp;lt;br/&amp;gt;    if ( flagInCheck ) ++depth;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************ &amp;lt;br/&amp;gt;    *  At leaf nodes we do quiescence search (captures only) to make sure   *&amp;lt;br/&amp;gt;    *  that only relatively quiet positions with no hanging pieces will be  *&amp;lt;br/&amp;gt;    *  evaluated.                                                           * &amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( depth == 0 ) return Quiesce( alpha, beta );            &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    sd.nodes ++;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( isRepetition() ) return contempt();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************&amp;lt;br/&amp;gt;    *  Read the transposition table. We may have already searched current   *&amp;lt;br/&amp;gt;    *  position. If depth was sufficient, then we might use the score       *&amp;lt;br/&amp;gt;    *  of that search. If not, hash move still is expected to be good       *&amp;lt;br/&amp;gt;    *  and should be sorted first.                                          *&amp;lt;br/&amp;gt;    *                                                                       *&amp;lt;br/&amp;gt;    *  NOTE: current implementation is sub-standard, since tt_move is just  *&amp;lt;br/&amp;gt;    *  an index showing move&#039;s location on a move list. We should be able   *&amp;lt;br/&amp;gt;    *  to retrieve move without generating full move list instead.          *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( ( val = tt_probe(depth, alpha, beta, &amp;amp;amp;tt_move) ) != INVALID ) {&amp;lt;br/&amp;gt;        // in pv nodes we return only in case of an exact hash hit&amp;lt;br/&amp;gt;        if (!is_pv || (val &amp;amp;gt; alpha &amp;amp;amp;&amp;amp;amp; val &amp;amp;lt; beta))&amp;lt;br/&amp;gt;        return val;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************&amp;lt;br/&amp;gt;    * EVAL PRUNING / STATIC NULL MOVE                                       *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (depth &amp;amp;lt; 3&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; (!is_pv)&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; (!flagInCheck)&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; (abs(beta - 1) &amp;amp;gt; -INF+100)) &amp;lt;br/&amp;gt;    {&amp;lt;br/&amp;gt;        int static_eval = eval(alpha, beta, 1);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        int eval_margin = 120 * depth;&amp;lt;br/&amp;gt;        if (static_eval - eval_margin &amp;amp;gt;= beta)&amp;lt;br/&amp;gt;            return static_eval - eval_margin;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    /************************************************************************ &amp;lt;br/&amp;gt;    *  Here  we introduce  NULL MOVE PRUNING. It  means  allowing opponent  * &amp;lt;br/&amp;gt;    *  to execute two moves in a row, i.e. capturing something and escaping *&amp;lt;br/&amp;gt;    *  a recapture. If this cannot  wreck our position, then it is so good  *&amp;lt;br/&amp;gt;    *  that there&#039;s  no  point in searching further. The flag &amp;amp;quot;can_null&amp;amp;quot;    *&amp;lt;br/&amp;gt;    *  ensures we don&#039;t do  two null moves in a row. Null move is not used  *&amp;lt;br/&amp;gt;    *  in  the endgame because of the risk of zugzwang.                     *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( ( depth &amp;amp;gt; 2) &amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     ( can_null ) &amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;   (!is_pv)&amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     ( eval(alpha, beta, 1) &amp;amp;gt; beta ) //should be &amp;amp;gt;=, see post&amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     ( b.PieceMaterial[b.stm] &amp;amp;gt; e.ENDGAME_MAT ) &amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     ( !flagInCheck )  ) &amp;lt;br/&amp;gt;       {&amp;lt;br/&amp;gt;        char ep_old = b.ep;&amp;lt;br/&amp;gt;        move_makeNull();&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /******************************************************************** &amp;lt;br/&amp;gt;        *  We use so-called adaptative null move pruning. Size of reduction *&amp;lt;br/&amp;gt;        *  depends on remaining  depth.                                     *&amp;lt;br/&amp;gt;        ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        char R = 2;&amp;lt;br/&amp;gt;        if ( depth &amp;amp;gt; 6 ) R = 3;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        val = -Search( depth - R - 1, ply, -beta, -beta+1, NO_NULL, NO_PV );    &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        move_unmakeNull(ep_old);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( time_over ) return 0;&amp;lt;br/&amp;gt;        if (val &amp;amp;gt;= beta) return beta;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************&amp;lt;br/&amp;gt;    *  Decide  if FUTILITY PRUNING  is  applicable. If we are not in check, *&amp;lt;br/&amp;gt;    *  not searching for a checkmate and eval is below  (alpha - margin),   *&amp;lt;br/&amp;gt;    *  it  might  mean that searching non-tactical moves at  low depths     *&amp;lt;br/&amp;gt;    *  is futile, so we set a flag allowing this pruning.                   *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int fmargin[4] = {0, 200, 300, 500};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( depth &amp;amp;lt;= 3&amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     !is_pv&amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     !flagInCheck&amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     abs(alpha) &amp;amp;lt; 9000&amp;lt;br/&amp;gt;    &amp;amp;amp;&amp;amp;amp;     eval(alpha,beta, 1) + fmargin[depth] &amp;amp;lt;= alpha )&amp;lt;br/&amp;gt;    f_prune = 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* generate moves */&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    smove movelist[256];&amp;lt;br/&amp;gt;    U8 mcount = movegen( movelist, tt_move );&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    ReorderMoves( movelist, mcount, ply );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    bestmove = movelist[0].id;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************&amp;lt;br/&amp;gt;    *  Now it&#039;s time to loop through the move list.                         *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    for (int i = 0; i &amp;amp;lt; mcount; i++) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        movegen_sort( mcount, movelist, i ); // pick the best of untried moves&amp;lt;br/&amp;gt;        move = movelist[i];&amp;lt;br/&amp;gt;        move_make(move);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        // filter out illegal moves&amp;lt;br/&amp;gt;        if (isAttacked(b.stm, b.KingLoc[!b.stm])) {&amp;lt;br/&amp;gt;            move_unmake(move);&amp;lt;br/&amp;gt;            continue; &amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        moves_tried++;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /********************************************************************&amp;lt;br/&amp;gt;        *  When the futility pruning flag is set, prune moves which do not  *&amp;lt;br/&amp;gt;        *  give  check and do not change material balance.  Some  programs  *&amp;lt;br/&amp;gt;        *  prune insufficient captures as well, but that seems too risky.   *&amp;lt;br/&amp;gt;        ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( f_prune&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;     legal_move &amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;  !move_iscapt(move)&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;    !move_isprom(move) &amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;  !isAttacked( !b.stm, b.KingLoc[b.stm] )  ) {&amp;lt;br/&amp;gt;                move_unmake(move);&amp;lt;br/&amp;gt;                continue;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        reduction_depth = 0;   // this move has not been reduced yet&amp;lt;br/&amp;gt;        new_depth = depth - 1; // decrease depth by one ply&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /********************************************************************&amp;lt;br/&amp;gt;        *  Late move reduction. Typically a cutoff occurs on trying one of  *&amp;lt;br/&amp;gt;        *  the first moves. If it doesn&#039;t, we are probably in an all-node,  *&amp;lt;br/&amp;gt;        *  which means that all moves will fail low. So we might as well    *&amp;lt;br/&amp;gt;        *  spare some effort, searching to reduced depth. Of course this is *&amp;lt;br/&amp;gt;        *  not a foolproof method, but it works more often than not. Still, *&amp;lt;br/&amp;gt;        *  we  need to exclude certain moves from reduction, in  order  to  *&amp;lt;br/&amp;gt;        *  filter out tactical moves that may cause a late cutoff.          *&amp;lt;br/&amp;gt;        ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (!is_pv &amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; new_depth &amp;amp;gt; 3&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; legal_move&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; moves_tried &amp;amp;gt; 3 &amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; !isAttacked(!b.stm, b.KingLoc[b.stm])&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; !flagInCheck &amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; (move.from != sd.killers[0][ply].from || move.to != sd.killers[0][ply].to)&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; (move.from != sd.killers[1][ply].from || move.to != sd.killers[1][ply].to)&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; !move_iscapt(move)&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp; !move_isprom(move) ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            /****************************************************************&amp;lt;br/&amp;gt;            * Real programs tend use more advanced formulas to calculate    *&amp;lt;br/&amp;gt;            * reduction depth. Typically they calculate it from both        *  &amp;lt;br/&amp;gt;            * remaining depth and move count. Formula used here is very     *&amp;lt;br/&amp;gt;            * basic and gives only a minimal improvement over uniform       *&amp;lt;br/&amp;gt;            * one ply reduction, and is included for the sake of complete-  *&amp;lt;br/&amp;gt;            * ness only.                                                    *&amp;lt;br/&amp;gt;            ****************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            reduction_depth = 1; &amp;lt;br/&amp;gt;            if (moves_tried &amp;amp;gt; 8) reduction_depth += 1; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            new_depth -= reduction_depth;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        re_search:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /******************************************************************** &amp;lt;br/&amp;gt;        *  The code below introduces principal variation search. It  means  *&amp;lt;br/&amp;gt;        *  that once we are in a PV-node (indicated by IS_PV flag) and  we  *&amp;lt;br/&amp;gt;        *  have  found a move that raises alpha, we assume that  the  rest  *&amp;lt;br/&amp;gt;        *  of moves ought to be refuted. This is done  relatively  cheaply  *&amp;lt;br/&amp;gt;        *  by using  a null-window search centered around alpha.  Only  if  *&amp;lt;br/&amp;gt;        *  this search fails high, we are forced repeat it with full window.*&amp;lt;br/&amp;gt;        *                                                                   *&amp;lt;br/&amp;gt;        *  Understanding the shorthand in the first two lines is a bit      *&amp;lt;br/&amp;gt;        *  tricky. If alpha has not been raised, we might be either in      *&amp;lt;br/&amp;gt;        *  a  zero window (scout) node or in an open window (pv)  node,     *&amp;lt;br/&amp;gt;        *  entered after a scout search failed high. In both cases, we      *&amp;lt;br/&amp;gt;        *  need to search with the same alpha, the same beta AND the same   *&amp;lt;br/&amp;gt;        *  node type.                                                       *&amp;lt;br/&amp;gt;        ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if (!raised_alpha)&amp;lt;br/&amp;gt;            val = -Search(new_depth, ply+1, -beta, -alpha, DO_NULL, is_pv);&amp;lt;br/&amp;gt;        else {&amp;lt;br/&amp;gt;            // first try to refute a move - if this fails, do a real search&amp;lt;br/&amp;gt;            if (-Search(new_depth, ply+1, -alpha - 1, -alpha, DO_NULL, NO_PV) &amp;amp;gt; alpha)&amp;lt;br/&amp;gt;                val = -Search(new_depth, ply+1, -beta, -alpha, DO_NULL, IS_PV);&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /********************************************************************&amp;lt;br/&amp;gt;        *  Sometimes reduced search brings us above alpha. This is unusual, *&amp;lt;br/&amp;gt;        *  since we expected reduced move to be bad in first place. It is   *&amp;lt;br/&amp;gt;        *  not certain now, so let&#039;s search to the full, unreduced depth.   *&amp;lt;br/&amp;gt;        ********************************************************************/&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        if (reduction_depth &amp;amp;amp;&amp;amp;amp; val &amp;amp;gt; alpha) {&amp;lt;br/&amp;gt;            new_depth += reduction_depth;&amp;lt;br/&amp;gt;            reduction_depth = 0;&amp;lt;br/&amp;gt;            goto re_search;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        move_unmake(move);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /******************************************************************** &amp;lt;br/&amp;gt;        *  If  the  move doesn&#039;t return -INF, it means that  the  King      *&amp;lt;br/&amp;gt;        *  couldn&#039;t be captured immediately. So the move was legal. In this * &amp;lt;br/&amp;gt;        *  case we increase the legal_move counter, to look afterwards,     *&amp;lt;br/&amp;gt;        *  whether there were any legal moves on the board at all.          * &amp;lt;br/&amp;gt;        ********************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        legal_move += ( val != -INF );&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( time_over ) return 0;&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        /******************************************************************** &amp;lt;br/&amp;gt;        *  We can improve over alpha, so we change the node value together  * &amp;lt;br/&amp;gt;        *  with  the expected move. Also the raised_alpha flag, needed  to  *&amp;lt;br/&amp;gt;        *  control PVS, is set. In case of a beta cuoff, when our position  *&amp;lt;br/&amp;gt;        *  is  so good that the score will not be accepted one ply before,  *  &amp;lt;br/&amp;gt;        *  we return it immediately.                                        *&amp;lt;br/&amp;gt;        ********************************************************************/ &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( val &amp;amp;gt; alpha ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;            bestmove = movelist[i].id;&amp;lt;br/&amp;gt;           &amp;lt;br/&amp;gt;           if ( val &amp;amp;gt;= beta ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;               /*************************************************************&amp;lt;br/&amp;gt;               *  On a quiet move update killer moves and history table     *&amp;lt;br/&amp;gt;               *  in order to enhance move ordering.                        *&amp;lt;br/&amp;gt;               *************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;               if (!move_iscapt(move)&amp;lt;br/&amp;gt;               &amp;amp;amp;&amp;amp;amp; !move_isprom(move)) {&amp;lt;br/&amp;gt;                   setKillers(movelist[i], ply);&amp;lt;br/&amp;gt;                   sd.history[move.from][move.to] += depth*depth;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                   /********************************************************* &amp;lt;br/&amp;gt;                   *  With super deep search history table would overflow   *&amp;lt;br/&amp;gt;                   *  - let&#039;s prevent it.                                   *&amp;lt;br/&amp;gt;                   *********************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                   if (sd.history[move.from][move.to] &amp;amp;gt; SORT_KILL) {&amp;lt;br/&amp;gt;                       for (int a = 0; a &amp;amp;lt; 128; a++)&amp;lt;br/&amp;gt;                           for (int b = 0; b &amp;amp;lt; 128; b++) {&amp;lt;br/&amp;gt;                               sd.history[a][b] = sd.history[a][b] / 2;&amp;lt;br/&amp;gt;                           }&amp;lt;br/&amp;gt;                   }&amp;lt;br/&amp;gt;               }&amp;lt;br/&amp;gt;               tt_flag = TT_BETA;&amp;lt;br/&amp;gt;               alpha = beta;&amp;lt;br/&amp;gt;               break; // no need to search any further&amp;lt;br/&amp;gt;           }&amp;lt;br/&amp;gt;           &amp;lt;br/&amp;gt;           raised_alpha = 1;&amp;lt;br/&amp;gt;           tt_flag = TT_EXACT;&amp;lt;br/&amp;gt;           alpha = val;&amp;lt;br/&amp;gt;               &amp;lt;br/&amp;gt;        } // changing the node value is finished&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;    }   // end of looping through the moves&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /************************************************************************ &amp;lt;br/&amp;gt;    *  Checkmate and stalemate detection: if we can&#039;t find a legal move     *&amp;lt;br/&amp;gt;    *  in the current position, we test if we are in check. If so, mate     *&amp;lt;br/&amp;gt;    *  score relative to search depth is returned. If not, we use  draw     *&amp;lt;br/&amp;gt;    *  evaluation provided by contempt() function.                          *&amp;lt;br/&amp;gt;    ************************************************************************/&amp;lt;br/&amp;gt;    &amp;lt;br/&amp;gt;    if ( !legal_move ) {&amp;lt;br/&amp;gt;        bestmove = -1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        if ( flagInCheck ) alpha = -INF + ply;&amp;lt;br/&amp;gt;        else               alpha = contempt();&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* tt_save() does not save anything when the search is timed out */&amp;lt;br/&amp;gt;    tt_save( depth, alpha, tt_flag, bestmove ); &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return alpha;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void setKillers(smove m, U8 ply) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    /* if a move isn&#039;t a capture, save it as a killer move */&amp;lt;br/&amp;gt;    if ( m.piece_cap == PIECE_EMPTY ) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        /* make sure killer moves will be different &amp;lt;br/&amp;gt;           before saving secondary killer move */&amp;lt;br/&amp;gt;        if ( m.from != sd.killers[ply][0].from ||&amp;lt;br/&amp;gt;             m.to   != sd.killers[ply][0].to&amp;lt;br/&amp;gt;           )&amp;lt;br/&amp;gt;             sd.killers[ply][1] = sd.killers[ply][0];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;              /* save primary killer move */&amp;lt;br/&amp;gt;             sd.killers[ply][0] = m;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void ReorderMoves(smove * m, U8 mcount, U8 ply) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for ( int j=0; j&amp;amp;lt;mcount; j++ ) {&amp;lt;br/&amp;gt;        if ( ( m[j].from == sd.killers[ply][1].from ) &amp;lt;br/&amp;gt;         &amp;amp;amp;&amp;amp;amp;      ( m[j].to   == sd.killers[ply][1].to   )&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;      ( m[j].score &amp;amp;lt; SORT_KILL-1 ) ) {    &amp;lt;br/&amp;gt;               m[j].score = SORT_KILL-1;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;        &amp;lt;br/&amp;gt;        if ( ( m[j].from == sd.killers[ply][0].from )&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;   ( m[j].to   == sd.killers[ply][0].to   )&amp;lt;br/&amp;gt;        &amp;amp;amp;&amp;amp;amp;     ( m[j].score &amp;amp;lt; SORT_KILL ) ) {&amp;lt;br/&amp;gt;               m[j].score = SORT_KILL;&amp;lt;br/&amp;gt;        }&amp;lt;br/&amp;gt;    } &amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int info_currmove(smove m, int nr) {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    switch(mode) {&amp;lt;br/&amp;gt;    case PROTO_UCI:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        char buffer[64];&amp;lt;br/&amp;gt;        char move[6];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        algebraic_writemove(m,move);&amp;lt;br/&amp;gt;        sprintf(buffer, &amp;amp;quot;info depth %d currmove %s currmovenumber %d&amp;amp;quot;, sd.depth, move, nr+1);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;        com_send(buffer);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int info_pv( int val ) {&amp;lt;br/&amp;gt;    char buffer[2048];&amp;lt;br/&amp;gt;    char score[10];&amp;lt;br/&amp;gt;    char pv[2048];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (abs( val ) &amp;amp;lt; INF - 2000) {&amp;lt;br/&amp;gt;        sprintf( score,&amp;amp;quot;cp %d&amp;amp;quot;, val );&amp;lt;br/&amp;gt;    } else {&amp;lt;br/&amp;gt;        //the mating value is returned in moves not plies ( thats why /2+1)&amp;lt;br/&amp;gt;        if (val &amp;amp;gt; 0) &amp;lt;br/&amp;gt;            sprintf(score,&amp;amp;quot;mate %d&amp;amp;quot;, (INF - val)/2    + 1);&amp;lt;br/&amp;gt;        else&amp;lt;br/&amp;gt;            sprintf(score,&amp;amp;quot;mate %d&amp;amp;quot;,-(INF + val)/2 - 1);&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    U32 nodes = (U32) sd.nodes;&amp;lt;br/&amp;gt;    U32 time = gettime() - sd.starttime;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    util_pv(pv);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( mode == PROTO_NOTHING )&amp;lt;br/&amp;gt;        sprintf(buffer, &amp;amp;quot; %2d. %9d  %5d %5d %s&amp;amp;quot;, sd.depth, nodes, time/10, val, pv);&amp;lt;br/&amp;gt;    else&amp;lt;br/&amp;gt;          sprintf(buffer, &amp;amp;quot;info depth %d score %s time %u nodes %u nps %u pv %s&amp;amp;quot;, sd.depth, score, time, nodes, countNps(nodes, time), pv);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    com_send(buffer);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/*********************************************************** &amp;lt;br/&amp;gt;*  countNps() guards against overflow and thus cares  for  *&amp;lt;br/&amp;gt;*  displaying  correct  nps during longer searches.  Node  *&amp;lt;br/&amp;gt;*  count is converted from U64 to unsigned int because of  *&amp;lt;br/&amp;gt;*  some problems with output.                              *&amp;lt;br/&amp;gt;***********************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;unsigned int countNps(unsigned int nodes, unsigned int time) {&amp;lt;br/&amp;gt;    if ( time == 0 ) return 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( time &amp;amp;gt; 20000 )&amp;lt;br/&amp;gt;        return nodes / (time/1000);&amp;lt;br/&amp;gt;    else&amp;lt;br/&amp;gt;        return (nodes*1000) / time;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/***********************************************************&amp;lt;br/&amp;gt;*  Checking if the current position has been already       *&amp;lt;br/&amp;gt;*  encountered on the current search path. Function        *&amp;lt;br/&amp;gt;*  does NOT check the actual number of repetitions.        *&amp;lt;br/&amp;gt;***********************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int isRepetition() {&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    for (int i=0; i &amp;amp;lt; b.rep_index; i++) {&amp;lt;br/&amp;gt;        if ( b.rep_stack[i] == b.hash )&amp;lt;br/&amp;gt;            return 1;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    return 0;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/************************************************************&amp;lt;br/&amp;gt;*  Clearing the history table is needed at the beginning    *&amp;lt;br/&amp;gt;*  of a search starting from a new position, like at the    *&amp;lt;br/&amp;gt;*  beginning of a new game.                                 * &amp;lt;br/&amp;gt;************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void clearHistoryTable() {&amp;lt;br/&amp;gt;     for (int i = 0; i &amp;amp;lt; 128; i++)&amp;lt;br/&amp;gt;         for (int j = 0; j &amp;amp;lt; 128; j++) {&amp;lt;br/&amp;gt;             sd.history[i][j] = 0;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/************************************************************&amp;lt;br/&amp;gt;* ageHistoryTable() is run between searches  to  decrease   *&amp;lt;br/&amp;gt;* the  history values used for move sorting. This  causes   *&amp;lt;br/&amp;gt;* obsolete information to disappear gradually. Clearing     *&amp;lt;br/&amp;gt;* the table was worse for the move ordering.                *&amp;lt;br/&amp;gt;************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;void ageHistoryTable() {&amp;lt;br/&amp;gt;     for (int i = 0; i &amp;amp;lt; 128; i++)&amp;lt;br/&amp;gt;         for (int j = 0; j &amp;amp;lt; 128; j++) {&amp;lt;br/&amp;gt;             sd.history[i][j] = sd.history[i][j] / 8;&amp;lt;br/&amp;gt;         }&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/************************************************************&amp;lt;br/&amp;gt;*  contempt() returns a draw value (which may be non-zero)  *&amp;lt;br/&amp;gt;*  relative  to  the side to move and to the  game  stage.  *&amp;lt;br/&amp;gt;*  This  way  we may make our program play for a  draw  or  *&amp;lt;br/&amp;gt;*  strive to avoid it.                                      *&amp;lt;br/&amp;gt;************************************************************/&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int contempt() {&amp;lt;br/&amp;gt;    int value = draw_opening;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( b.PieceMaterial[sd.myside] &amp;amp;lt; e.ENDGAME_MAT )&amp;lt;br/&amp;gt;        value = draw_endgame;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if ( b.stm == sd.myside ) return value;&amp;lt;br/&amp;gt;    else                      return -value;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;stdafx.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;search.h&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;quot;transposition.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;#define MAX_DEPTH 100&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* symbols used to enhance readability */&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define DO_NULL    1&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define NO_NULL    0&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define IS_PV      1&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define NO_PV      0&lt;/span&gt;
&amp;nbsp;
sSearchDriver sd&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; draw_opening &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// middlegame draw value&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; draw_endgame &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;// endgame draw value&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; ASPIRATION   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// size of the aspiration window ( val-ASPITATION, val+ASPIRATION )&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; eproto &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    PROTO_NOTHING,
    PROTO_XBOARD,
    PROTO_UCI
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;extern&lt;/span&gt; mode&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
U8 bestmove&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;         &lt;span class=&quot;co1&quot;&gt;// move id passed between iterations for sorting purposes&lt;/span&gt;
smove move_to_make&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;co1&quot;&gt;// move to be returned when search runs out of time&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/***************************************************************
*  search_run() is the interface of all the search functions,  *
*  the only function called outside search.cpp. It does some   *
*  preparatory work, and then calls search_iterate();          *
***************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; search_run&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; chronos.&lt;span class=&quot;me1&quot;&gt;flags&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;FTIME &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; FINC &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; FMOVESTOGO&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; getBookMove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BOOK_BROAD&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    search_clearDriver&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
    time_calc_movetime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    ageHistoryTable&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PROTO_NOTHING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; printSearchHeader&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    search_iterate&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; search_clearDriver&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;         &lt;span class=&quot;co1&quot;&gt;// remember color - needed in contempt()&lt;/span&gt;
     sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     sd.&lt;span class=&quot;me1&quot;&gt;movetime&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;co1&quot;&gt;// now clear all the statistical data&lt;/span&gt;
     sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
     sd.&lt;span class=&quot;me1&quot;&gt;q_nodes&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**************************************************************
*  search_iterate() calls search_root() with increasing depth *
*  until allocated time is exhausted.                         *
**************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; search_iterate&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val, temp&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// check the exact number of legal moves in the current position&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; move_count &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; move_countLegal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// do a full-window 1-ply search to get the first estimate of val &lt;/span&gt;
&amp;nbsp;
    sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; search_root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INF, INF &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// main loop, increasing deph in steps of 1&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt;MAX_DEPTH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// breaking conditions - either expired time&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// or just one legal reply and position searched to depth 4&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; time_stop_root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; time_over  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; move_count &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// this function deals with aspiration window&lt;/span&gt;
        val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; search_widen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// after the loop has finished, send the move to the interface&lt;/span&gt;
    com_sendmove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move_to_make&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; search_widen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; depth, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val, 
    alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,
    beta  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; search_root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, alpha, beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;temp &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; alpha &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; temp &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; search_root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INF, INF&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; temp&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; search_root&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; U8 depth, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; alpha, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; flagInCheck&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    smove movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    U8 currmove_legal &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* Check  extension is done also at  the  root */&lt;/span&gt;
&amp;nbsp;
    flagInCheck &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; flagInCheck &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    U8 mcount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;movelist, bestmove&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; U8 i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        movegen_sort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mcount, movelist, i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; KING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INF&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// filter out illegal moves&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//    if ( mode == PROTO_UCI ) &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//        info_currmove( movelist[i], currmove_legal ); &lt;/span&gt;
&amp;nbsp;
        currmove_legal &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/* the &amp;quot;if&amp;quot; clause introduces PVS at root */&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; 
             &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, NO_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
           val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;depth&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, IS_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;time_over&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
           bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            move_to_make &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
           &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// should be &amp;gt;=, see post&lt;/span&gt;
              tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;depth, beta, TT_BETA, bestmove&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              info_pv&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; beta&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
           alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth, alpha, TT_ALPHA, bestmove &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
           info_pv&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// changing node value finished&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth, alpha, TT_EXACT, bestmove &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; alpha&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; Search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; U8 depth, U8 ply, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; alpha, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; beta, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; can_null, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; is_pv &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INF&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; bestmove&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; tt_move &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INVALID&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; tt_flag &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TT_ALPHA&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  flagInCheck&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  legal_move &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  raised_alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  f_prune &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  reduction_depth &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  moves_tried &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  new_depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  mate_value &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INF &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; ply&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// will be used in mate distance pruning&lt;/span&gt;
    smove move&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************  
    *  Probably later we will want to probe the transposition table.        *
    *  Tell the cpu to prepare for that event. This is just a minor         *
    *  speed optimization and program would run fine without that.          *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    _mm_prefetch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;tt&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; tt_size&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, _MM_HINT_NTA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************
    * Check for timeout. This is quite time-consuming, so we do it only     *
    * every so often. The side effect is that if we want  to limit search   *
    * by number of nodes, it will be slightly inexact.                      *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;time_over &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4095&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        time_over &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; time_stop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; time_over &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************
    * MATE DISTANCE PRUNING - a minor improvement that helps to shave off   *
    * some nodes when the checkmate is near. Basically it prevents looking  *
    * for checkmates taking longer than one we have already found. No Elo   *
    * gain expected, but it&#039;s a nice feature. Don&#039;t use it at the root,     *
    * since  this code  doesn&#039;t return a move, only a value.                *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;mate_value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;mate_value&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;beta &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; mate_value &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; beta &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; mate_value &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; alpha&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************ 
    *  Are we in check? If so, extend. It also means that program will      *
    *  never enter quiescence search while in check.                        *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    flagInCheck &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; flagInCheck &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************ 
    *  At leaf nodes we do quiescence search (captures only) to make sure   *
    *  that only relatively quiet positions with no hanging pieces will be  *
    *  evaluated.                                                           * 
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; Quiesce&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; alpha, beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;            
&amp;nbsp;
    sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; isRepetition&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; contempt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************
    *  Read the transposition table. We may have already searched current   *
    *  position. If depth was sufficient, then we might use the score       *
    *  of that search. If not, hash move still is expected to be good       *
    *  and should be sorted first.                                          *
    *                                                                       *
    *  NOTE: current implementation is sub-standard, since tt_move is just  *
    *  an index showing move&#039;s location on a move list. We should be able   *
    *  to retrieve move without generating full move list instead.          *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; tt_probe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;depth, alpha, beta, &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;tt_move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; INVALID &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// in pv nodes we return only in case of an exact hash hit&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_pv &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************
    * EVAL PRUNING / STATIC NULL MOVE                                       *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;depth &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;flagInCheck&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;beta &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INF&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; static_eval &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha, beta, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; eval_margin &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;static_eval &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; eval_margin &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; static_eval &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; eval_margin&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************ 
    *  Here  we introduce  NULL MOVE PRUNING. It  means  allowing opponent  * 
    *  to execute two moves in a row, i.e. capturing something and escaping *
    *  a recapture. If this cannot  wreck our position, then it is so good  *
    *  that there&#039;s  no  point in searching further. The flag &amp;quot;can_null&amp;quot;    *
    *  ensures we don&#039;t do  two null moves in a row. Null move is not used  *
    *  in  the endgame because of the risk of zugzwang.                     *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; can_null &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; eval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha, beta, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//should be &amp;gt;=, see post&lt;/span&gt;
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ENDGAME_MAT&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;flagInCheck &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
       &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; ep_old &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;ep&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        move_makeNull&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/******************************************************************** 
        *  We use so-called adaptative null move pruning. Size of reduction *
        *  depends on remaining  depth.                                     *
        ********************************************************************/&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; R &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; R &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; R &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, ply, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, NO_NULL, NO_PV &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;    
&amp;nbsp;
        move_unmakeNull&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ep_old&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; time_over &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; beta&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************
    *  Decide  if FUTILITY PRUNING  is  applicable. If we are not in check, *
    *  not searching for a checkmate and eval is below  (alpha - margin),   *
    *  it  might  mean that searching non-tactical moves at  low depths     *
    *  is futile, so we set a flag allowing this pruning.                   *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; fmargin&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_pv
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;flagInCheck
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9000&lt;/span&gt;
    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     eval&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;alpha,beta, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; fmargin&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;depth&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;=&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f_prune &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* generate moves */&lt;/span&gt;
&amp;nbsp;
    smove movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    U8 mcount &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movegen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist, tt_move &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    ReorderMoves&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; movelist, mcount, ply &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************
    *  Now it&#039;s time to loop through the move list.                         *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        movegen_sort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mcount, movelist, i &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// pick the best of untried moves&lt;/span&gt;
        move &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        move_make&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// filter out illegal moves&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        moves_tried&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
        *  When the futility pruning flag is set, prune moves which do not  *
        *  give  check and do not change material balance.  Some  programs  *
        *  prune insufficient captures as well, but that seems too risky.   *
        ********************************************************************/&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; f_prune
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     legal_move 
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_iscapt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;    &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_isprom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        reduction_depth &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;// this move has not been reduced yet&lt;/span&gt;
        new_depth &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; depth &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// decrease depth by one ply&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
        *  Late move reduction. Typically a cutoff occurs on trying one of  *
        *  the first moves. If it doesn&#039;t, we are probably in an all-node,  *
        *  which means that all moves will fail low. So we might as well    *
        *  spare some effort, searching to reduced depth. Of course this is *
        *  not a foolproof method, but it works more often than not. Still, *
        *  we  need to exclude certain moves from reduction, in  order  to  *
        *  filter out tactical moves that may cause a late cutoff.          *
        ********************************************************************/&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;is_pv 
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; new_depth &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; legal_move
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; moves_tried &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; 
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;isAttacked&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;, b.&lt;span class=&quot;me1&quot;&gt;KingLoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;flagInCheck 
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_iscapt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_isprom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;coMULTI&quot;&gt;/****************************************************************
            * Real programs tend use more advanced formulas to calculate    *
            * reduction depth. Typically they calculate it from both        *  
            * remaining depth and move count. Formula used here is very     *
            * basic and gives only a minimal improvement over uniform       *
            * one ply reduction, and is included for the sake of complete-  *
            * ness only.                                                    *
            ****************************************************************/&lt;/span&gt;
&amp;nbsp;
            reduction_depth &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;moves_tried &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; reduction_depth &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
            new_depth &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; reduction_depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        re_search&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/******************************************************************** 
        *  The code below introduces principal variation search. It  means  *
        *  that once we are in a PV-node (indicated by IS_PV flag) and  we  *
        *  have  found a move that raises alpha, we assume that  the  rest  *
        *  of moves ought to be refuted. This is done  relatively  cheaply  *
        *  by using  a null-window search centered around alpha.  Only  if  *
        *  this search fails high, we are forced repeat it with full window.*
        *                                                                   *
        *  Understanding the shorthand in the first two lines is a bit      *
        *  tricky. If alpha has not been raised, we might be either in      *
        *  a  zero window (scout) node or in an open window (pv)  node,     *
        *  entered after a scout search failed high. In both cases, we      *
        *  need to search with the same alpha, the same beta AND the same   *
        *  node type.                                                       *
        ********************************************************************/&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;raised_alpha&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_depth, ply&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, is_pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// first try to refute a move - if this fails, do a real search&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_depth, ply&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, NO_PV&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                val &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Search&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_depth, ply&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;beta, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;alpha, DO_NULL, IS_PV&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************************
        *  Sometimes reduced search brings us above alpha. This is unusual, *
        *  since we expected reduced move to be bad in first place. It is   *
        *  not certain now, so let&#039;s search to the full, unreduced depth.   *
        ********************************************************************/&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;reduction_depth &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            new_depth &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; reduction_depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            reduction_depth &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;goto&lt;/span&gt; re_search&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        move_unmake&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/******************************************************************** 
        *  If  the  move doesn&#039;t return -INF, it means that  the  King      *
        *  couldn&#039;t be captured immediately. So the move was legal. In this * 
        *  case we increase the legal_move counter, to look afterwards,     *
        *  whether there were any legal moves on the board at all.          * 
        ********************************************************************/&lt;/span&gt;
&amp;nbsp;
        legal_move &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INF &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; time_over &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/******************************************************************** 
        *  We can improve over alpha, so we change the node value together  * 
        *  with  the expected move. Also the raised_alpha flag, needed  to  *
        *  control PVS, is set. In case of a beta cuoff, when our position  *
        *  is  so good that the score will not be accepted one ply before,  *  
        *  we return it immediately.                                        *
        ********************************************************************/&lt;/span&gt; 
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; alpha &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
           &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;=&lt;/span&gt; beta &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
               &lt;span class=&quot;coMULTI&quot;&gt;/*************************************************************
               *  On a quiet move update killer moves and history table     *
               *  in order to enhance move ordering.                        *
               *************************************************************/&lt;/span&gt;
&amp;nbsp;
               &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_iscapt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
               &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;move_isprom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                   setKillers&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;movelist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;, ply&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                   sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; depth&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;depth&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                   &lt;span class=&quot;coMULTI&quot;&gt;/********************************************************* 
                   *  With super deep search history table would overflow   *
                   *  - let&#039;s prevent it.                                   *
                   *********************************************************/&lt;/span&gt;
&amp;nbsp;
                   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;move.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; SORT_KILL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                       &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; a &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; a &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; a&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                           &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; b &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; b &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; b&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                               sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                           &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
               &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
               tt_flag &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TT_BETA&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; beta&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
               &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// no need to search any further&lt;/span&gt;
           &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
           raised_alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           tt_flag &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; TT_EXACT&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
           alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; val&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// changing the node value is finished&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;// end of looping through the moves&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/************************************************************************ 
    *  Checkmate and stalemate detection: if we can&#039;t find a legal move     *
    *  in the current position, we test if we are in check. If so, mate     *
    *  score relative to search depth is returned. If not, we use  draw     *
    *  evaluation provided by contempt() function.                          *
    ************************************************************************/&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;legal_move &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        bestmove &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; flagInCheck &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;INF &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; ply&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;               alpha &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; contempt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* tt_save() does not save anything when the search is timed out */&lt;/span&gt;
    tt_save&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; depth, alpha, tt_flag, bestmove &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; alpha&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; setKillers&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m, U8 ply&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;coMULTI&quot;&gt;/* if a move isn&#039;t a capture, save it as a killer move */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;piece_cap&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PIECE_EMPTY &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/* make sure killer moves will be different 
           before saving secondary killer move */&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt;
             m.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;
           &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
              &lt;span class=&quot;coMULTI&quot;&gt;/* save primary killer move */&lt;/span&gt;
             sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; ReorderMoves&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; m, U8 mcount, U8 ply&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; j&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;mcount&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
         &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;      &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;      &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; SORT_KILL&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;    
               m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_KILL&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;killers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ply&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;     &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; SORT_KILL &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
               m&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;score&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; SORT_KILL&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; info_currmove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smove m, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PROTO_UCI&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; buffer&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; move&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        algebraic_writemove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m,move&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer, &lt;span class=&quot;st0&quot;&gt;&amp;quot;info depth %d currmove %s currmovenumber %d&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, move, nr&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; info_pv&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; buffer&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; score&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; pv&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; INF &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; score,&lt;span class=&quot;st0&quot;&gt;&amp;quot;cp %d&amp;quot;&lt;/span&gt;, val &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;//the mating value is returned in moves not plies ( thats why /2+1)&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;val &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
            &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;score,&lt;span class=&quot;st0&quot;&gt;&amp;quot;mate %d&amp;quot;&lt;/span&gt;, &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;INF &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;    &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;score,&lt;span class=&quot;st0&quot;&gt;&amp;quot;mate %d&amp;quot;&lt;/span&gt;,&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;INF &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    U32 nodes &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U32&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;nodes&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    U32 &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gettime&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;starttime&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    util_pv&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; PROTO_NOTHING &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer, &lt;span class=&quot;st0&quot;&gt;&amp;quot; %2d. %9d  %5d %5d %s&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, nodes, &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, val, pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
          &lt;span class=&quot;kw3&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer, &lt;span class=&quot;st0&quot;&gt;&amp;quot;info depth %d score %s time %u nodes %u nps %u pv %s&amp;quot;&lt;/span&gt;, sd.&lt;span class=&quot;me1&quot;&gt;depth&lt;/span&gt;, score, &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;, nodes, countNps&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nodes, &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, pv&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    com_send&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buffer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/*********************************************************** 
*  countNps() guards against overflow and thus cares  for  *
*  displaying  correct  nps during longer searches.  Node  *
*  count is converted from U64 to unsigned int because of  *
*  some problems with output.                              *
***********************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; countNps&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; nodes, &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20000&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; nodes &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nodes&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/***********************************************************
*  Checking if the current position has been already       *
*  encountered on the current search path. Function        *
*  does NOT check the actual number of repetitions.        *
***********************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; isRepetition&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;rep_index&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;rep_stack&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;hash&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/************************************************************
*  Clearing the history table is needed at the beginning    *
*  of a search starting from a new position, like at the    *
*  beginning of a new game.                                 * 
************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; clearHistoryTable&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
             sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/************************************************************
* ageHistoryTable() is run between searches  to  decrease   *
* the  history values used for move sorting. This  causes   *
* obsolete information to disappear gradually. Clearing     *
* the table was worse for the move ordering.                *
************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; ageHistoryTable&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
             sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;history&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/************************************************************
*  contempt() returns a draw value (which may be non-zero)  *
*  relative  to  the side to move and to the  game  stage.  *
*  This  way  we may make our program play for a  draw  or  *
*  strive to avoid it.                                      *
************************************************************/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; contempt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; value &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; draw_opening&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;PieceMaterial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; e.&lt;span class=&quot;me1&quot;&gt;ENDGAME_MAT&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        value &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; draw_endgame&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b.&lt;span class=&quot;me1&quot;&gt;stm&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; sd.&lt;span class=&quot;me1&quot;&gt;myside&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; value&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;                      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;value&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=56647&quot; rel=&quot;nofollow&quot;&gt;value &amp;gt; beta&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Pope&quot;&gt;Robert Pope&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, June 10, 2015&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-chess.org/viewtopic.php?f=5&amp;amp;t=3056&quot; rel=&quot;nofollow&quot;&gt;Static NULL Move&lt;/a&gt; by thevinenator, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;OpenChess Forum&lt;/a&gt;, December 26, 2016  » &lt;a class=&quot;wiki_link&quot; href=&quot;/Reverse%20Futility%20Pruning&quot;&gt;Reverse Futility Pruning&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-chess.org/viewtopic.php?f=5&amp;amp;t=3074&quot; rel=&quot;nofollow&quot;&gt;NULL Move code question&lt;/a&gt; by thevinenator, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;OpenChess Forum&lt;/a&gt;, January 27, 2017 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Null%20Move%20Pruning&quot;&gt;Null Move Pruning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:6:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:6 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:01:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;CPW-Engine_search&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;30&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;CPW-Engine_search&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;30&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-CPW-Engine_search includeBody-CPW-Engine_search includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Alpha-Beta&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Alpha-Beta&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 28, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Contempt+Factor&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Contempt Factor&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 10, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CPW-Engine_search&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CPW-Engine_search&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 4, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Null+Move+Pruning&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Null Move Pruning&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 2, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Principal+Variation+Search&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Principal Variation Search&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 22, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Reverse+Futility+Pruning&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Reverse Futility Pruning&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 2, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Robert+Pope&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Robert Pope&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 10, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:01 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CPW-Engine&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>

  </channel>
</rss>