position fen 8/8/7K/6P1/1k6/8/8/8 w - - 0 1
eval



position fen r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 10
go infinite



fasm chess engine
go infinite
info depth 1 score cp 26 nodes 45 nps 513223 time 0 multipv 1 pv g1f3
info depth 2 score cp 0 nodes 149 nps 376931 time 0 multipv 1 pv g1f3 g8f6
info depth 3 score cp 26 nodes 380 nps 571607 time 0 multipv 1 pv g1f3 g8f6 b1c3
info depth 4 score cp 0 nodes 1916 nps 1283640 time 1 multipv 1 pv g1f3 g8f6 b1c3 b8c6
info depth 5 score cp 24 nodes 7013 nps 2541709 time 2 multipv 1 pv g1f3 g8f6 b1c3 b8c6 d2d4
info depth 6 score cp 0 nodes 36275 nps 3981875 time 9 multipv 1 pv d2d4 d7d5 b1c3 c8f5 c1f4 b8c6
info depth 7 score cp 24 nodes 91934 nps 4967958 time 18 multipv 1 pv d2d4 g8f6 b1c3 e7e6 g1f3 f8d6 e2e4
info depth 8 score cp 1 nodes 298309 nps 6186583 time 48 multipv 1 pv b1c3 g8f6 d2d3 b8c6 c1e3 d7d5 g1f3 c8f5
info depth 9 score cp 14 nodes 830070 nps 8219586 time 100 multipv 1 pv d2d4 g8f6 g1f3 d7d6 b1c3 c8f5 f3h4 d8d7 c1f4
info depth 10 score cp 6 nodes 3978014 nps 9963728 time 399 multipv 1 pv e2e4 b8c6 g1f3 e7e5 b1c3 g8f6 d2d4 e5d4 f3d4 f8d6
info depth 11 score cp 16 nodes 9119127 nps 10405517 time 876 multipv 1 pv d2d4 g8f6 b1c3 e7e6 g1f3 f8b4 c1d2 b8c6 a2a3 b4d6 e2e4
info depth 12 score cp 10 nodes 24853653 nps 10510599 time 2364 multipv 1 pv e2e4 e7e5 g1f3 b8c6 b1c3 g8f6 d2d4 e5d4 f3d4 c6d4 d1d4 f8d6
info depth 13 score cp 17 nodes 71437898 nps 10537051 time 6779 multipv 1 pv d2d4 g8f6 b1c3 e7e6 g1f3 f8b4 c1d2 b8c6 a2a3 b4d6 e2e4 e8g8 f1c4
info depth 14 score cp 9 nodes 148780039 nps 10462495 time 14220 multipv 1 pv d2d4 g8f6 g1f3 d7d5 c1f4 c8f5 e2e3 b8c6 f1b5 f6h5 b1c3 h5f4 b5c6 b7c6 e3f4
info depth 15 score cp 17 nodes 335395937 nps 10687913 time 31380 multipv 1 pv d2d4 g8f6 g1f3 d7d5 c1f4 c8f5 e2e3 e7e6 b1c3 f8b4 f1d3 b4c3 b2c3 f5d3 d1d3 b8c6
info depth 16 score cp 10 nodes 1006346167 nps 10553550 time 95356 multipv 1 pv d2d4 g8f6 b1c3 d7d5 c1f4 c8f5 e2e3 b8c6 g1f3 e7e6 f1b5 f8d6 b5c6 b7c6 f3e5 d8b8 b2b3
stop
bestmove d2d4 ponder g8f6




position startpos moves g1f3 d7d5 c2c4 e7e6 g2g3 g8f6 d2d4 d5c4 f1g2 a7a6 e1g1 b8c6 e2e3 c8d7 b1c3 f6d5
moves f3d2 d5c3 b2c3 b7b5 a2a4 f8e7 c1a3 e8g8 d2e4 e7a3 a1a3 a8b8 e4c5 d8c8 f2f4 c6e7 d1e2 g8h8 g1h1 g7g6
moves g2f3 d7c6 f3c6 e7c6 a3a2 b8b6 e2f3 c6e7 a4b5 a6b5 e3e4 c8d8 h2h3 e7c6 f1d1 f8e8 g3g4 d8e7 e4e5 b5b4
moves c3b4 c6b4 a2e2 e8d8 g4g5 b4d5 e2c2 b6b4 c2f2 h7h5 f2a2 c4c3 h3h4 e7e8 a2c2 e8b5 f3f2 b4b2 c2b2 b5b2
moves d1f1 b2f2 f1f2 d5e3 f2f3 c3c2

position startpos moves e2e4 e7e5 g1f3 b8c6 f1c4 g8f6 b1c3 f8c5 d2d3 d7d6 c1g5 h7h6 g5f6 d8f6 c3d5 f6d8 c2c3
moves c6a5 b2b4 a5c4 d3c4 c5b6 d1d3 c8e6 a2a4 a7a5 d5b6 c7b6 e1g1 a8c8 f3d2 c8c6 b4b5 c6c5 f1d1 d8c7 d2f1 e8e7
moves f1e3 h8d8 g1h1 e6c4 d3c2 e7f8 f2f3 f8g8 e3c4 c5c4 d1d3 h6h5 h2h3 h5h4 a1d1 g8h8 c2d2 c4a4 d3d6 d8d6 d2d6
moves c7d6 d1d6 a4c4 d6b6 c4c7 b6d6 a5a4 d6d5 f7f6 h1h2 a4a3 d5d3 c7c4 d3d8 h8h7 d8a8 c4c3 a8a7 b7b6 a7a6 c3c1
moves a6a3 c1b1 a3a2 b1b5 g2g3 b5b3 h2g2 h4g3 h3h4 b6b5 g2g3 b3b1 g3g4 b5b4 g4f5 b1g1 a2f2 h7h6 f3f4 g1a1 f4e5
moves a1a5 f2b2 a5e5 f5f4 e5b5 e4e5 f6e5 f4e4 b4b3 e4d3 b5b4 d3c3 b4h4


position startpos moves g1f3 d7d5 g2g3 g8f6 f1g2 c7c6 e1g1 c8g4 d2d3 b8d7 b1d2 e7e5 e2e4 d5e4 d3e4 f8e7 h2h3 g4h5 d1e2
moves d8c7 a2a4 e8g8 g1h1 g8h8 b2b3 a7a5 c1b2 h5g6 d2c4 g6e4 f3e5 e4g2 h1g2 e7b4 e2f3 f6d5 e5f7 h8g8 f7h6 g7h6 f3g4 g8f7 g4g7
moves f7e8 g7h7 e8d8 h7h6 d8c8 a1d1 c8b8 g2h1 a8a6 f2f4 b8a8 f1f3 d7f6 f4f5 c7c8 g3g4 b7b5 c4e5 b5a4 b3a4 f6e4 c2c4 b4d2 d1d2
moves f8h8 h6e6 e4d2 e6c8 h8c8 f3d3 d2e4 c4d5 e4f2 h1g2 f2d3 e5d3 c6d5 b2e5 a6b6 f5f6 b6b3 d3f2 a8b7 g4g5 b3e3 e5d4 e3e2 g5g6
moves e2d2 f6f7 d2d4 g6g7 d4f4

1:info depth 1 time 0 nodes 9 score cp 516 pv g7g8q
1:info depth 2 time 0 nodes 106 score cp 504 pv g7g8q b7b8
1:info depth 3 time 0 nodes 297 score cp 516 pv g7g8q b7b8 f2d3
1:info depth 4 time 0 nodes 817 score cp 516 pv g7g8q b7b8 f2d3 f4f6
1:info depth 5 time 16 nodes 3422 score cp 717 pv g7g8q f4a4 g8c8 b7c8 f7f8q c8d7 g2f3
1:info depth 6 time 16 nodes 5391 score cp 828 pv g7g8q f4a4 f7f8q c8f8 g8d5 b7b6 d5d6 b6b5 d6f8
1:info depth 7 time 16 nodes 10921 score cp 834 pv g7g8q f4a4 g8c8 b7c8 f7f8q c8d7 f8c5 a4a1 c5d5 d7e7
1:info depth 8 time 16 nodes 27396 score cp 693 pv g7g8q c8c2 g8g3 c2c4 f7f8q f4f8 g3g7 b7c6 g7h6 c6d7 h6f8 c4a4
1:info depth 9 time 16 nodes 40208 score cp 832 pv g7g8q c8c2 g8g3 c2c4 g3g7 b7c6 f2d3 c4c2 g2g3 f4f1 f7f8q f1f8 g7f8
1:info depth 10 time 16 nodes 61642 score cp 838 pv g7g8q c8c2 g8g3 c2c4 g3g7 b7c6 f2d3 c4c2 g2g3 f4f1 g7h6 c6d7 f7f8q f1f8 h6f8
1:info depth 11 time 31 nodes 93659 score cp 838 pv g7g8q c8c2 g8g3 c2c4 g3g7 b7c6 f2d3 c4c2 g2g3 f4f1 g7h6 c6d7 f7f8q f1f8 h6f8
1:info depth 12 time 47 nodes 162913 score cp 838 pv g7g8q c8c2 g8g3 c2c4 g3g7 b7c6 f2d3 c4c2 g2g3 f4f1 g7h6 c6d7 f7f8q f1f8 h6f8
1:info depth 13 time 125 nodes 465889 score cp 850 pv g7g8q c8c2 g8g3 c2c4 f7f8q f4f8 g3g7 b7c6 g7f8 c6d7 f8a8 c4c5 a8b7 d7e8 g2f3



fasm chess engine
go
info depth 1 score cp 26 nodes 45 nps 730770 time 0 multipv 1 pv g1f3
info depth 2 score cp 0 nodes 149 nps 688809 time 0 multipv 1 pv g1f3 g8f6
info depth 3 score cp 26 nodes 380 nps 1182639 time 0 multipv 1 pv g1f3 g8f6 b1c3
info depth 4 score cp 0 nodes 1916 nps 1905723 time 1 multipv 1 pv g1f3 g8f6 b1c3 b8c6
info depth 5 score cp 24 nodes 7071 nps 2763535 time 2 multipv 1 pv g1f3 g8f6 b1c3 b8c6 d2d4
info depth 6 score cp 0 nodes 37293 nps 3116779 time 11 multipv 1 pv d2d4 d7d5 b1c3 c8f5 c1f4 b8c6
info depth 7 score cp 24 nodes 94519 nps 3694169 time 25 multipv 1 pv d2d4 g8f6 b1c3 e7e6 g1f3 f8d6 e2e4
info depth 8 score cp 1 nodes 301303 nps 4532353 time 66 multipv 1 pv b1c3 g8f6 d2d3 b8c6 c1e3 d7d5 g1f3 c8f5
info depth 9 score cp 14 nodes 847267 nps 6009621 time 140 multipv 1 pv d2d4 g8f6 g1f3 d7d6 b1c3 c8f5 f3h4 d8d7 c1f4
info depth 10 score cp 6 nodes 3805965 nps 7343055 time 518 multipv 1 pv e2e4 b8c6 g1f3 e7e5 b1c3 g8f6 d2d4 e5d4 f3d4 f8d6
info depth 11 score cp 16 nodes 9628826 nps 7912491 time 1216 multipv 1 pv d2d4 g8f6 b1c3 e7e6 g1f3 f8b4 c1d2 b8c6 a2a3 b4d6 e2e4
info depth 12 score cp 10 nodes 26791056 nps 8110936 time 3303 multipv 1 pv e2e4 e7e5 g1f3 g8f6 b1c3 b8c6 d2d4 e5d4 f3d4 c6d4 d1d4 f8d6
info depth 13 score cp 17 nodes 81237681 nps 8138456 time 9981 multipv 1 pv d2d4 g8f6 b1c3 e7e6 a2a3 b8c6 g1f3 f8e7 e2e4 e8g8 c1f4 d7d5 f1d3 d5e4 d3e4
f6e4 c3e4
bestmove d2d4 ponder g8f6

fasm chess engine
go
info depth 1 score cp 26 nodes 45 nps 647728 time 0 multipv 1 pv g1f3
info depth 2 score cp 0 nodes 149 nps 779891 time 0 multipv 1 pv g1f3 g8f6
info depth 3 score cp 26 nodes 380 nps 1300903 time 0 multipv 1 pv g1f3 g8f6 b1c3
info depth 4 score cp 0 nodes 1916 nps 2054986 time 0 multipv 1 pv g1f3 g8f6 b1c3 b8c6
info depth 5 score cp 24 nodes 7013 nps 2713241 time 2 multipv 1 pv g1f3 g8f6 b1c3 b8c6 d2d4
info depth 6 score cp 0 nodes 36275 nps 3429627 time 10 multipv 1 pv d2d4 d7d5 b1c3 c8f5 c1f4 b8c6
info depth 7 score cp 24 nodes 91934 nps 4080166 time 22 multipv 1 pv d2d4 g8f6 b1c3 e7e6 g1f3 f8d6 e2e4
info depth 8 score cp 1 nodes 293779 nps 4623940 time 63 multipv 1 pv b1c3 g8f6 d2d3 b8c6 c1e3 d7d5 g1f3 c8f5
info depth 9 score cp 15 nodes 853546 nps 5902047 time 144 multipv 1 pv g1f3 b8c6 d2d4 d7d5 d1d3 g8f6 c1f4 c6b4 d3c3
info depth 10 score cp 6 nodes 2963151 nps 6880303 time 430 multipv 1 pv e2e4 b8c6 g1f3 e7e5 b1c3 g8f6 d2d4 e5d4 f3d4 f8d6
info depth 11 score cp 19 nodes 9425872 nps 7183445 time 1312 multipv 1 pv d2d4 g8f6 g1f3 d7d5 c1f4 b8c6 e2e3 h7h6 b1c3 g7g5 f4e5 c6e5 f3e5
info depth 12 score cp 10 nodes 25347353 nps 7193605 time 3523 multipv 1 pv e2e4 e7e5 g1f3 b8c6 b1c3 g8f6 d2d4 e5d4 f3d4 c6d4 d1d4 f8d6
info depth 13 score cp 17 nodes 70341854 nps 7309081 time 9623 multipv 1 pv e2e4 d7d5 e4d5 d8d5 b1c3 d5e6 g1e2 g8f6 d2d3 f6d5 c3d5 e6d5 e2c3 d5d4
bestmove e2e4 ponder d7d5




1: 48
2: 2039
3: 97862
4: 4085603
5: 193690690

position fen 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -
1: 14
2: 191
3: 2812
4: 43238
5: 674624
6: 11030083
7: 178633661

position fen rnbqkb1r/pp1p1ppp/2p5/4P3/2B5/8/PPP1NnPP/RNBQK2R w KQkq - 0 6
1: 42
2: 1352
3: 53392

position fen r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 10
0: 1
1: 46
2: 2079
3: 89890
4: 3894594
5: 164075551
6: 6923051137
7: 287188994746
8: 11923589843526
9: 490154852788714



fasm chess engine
go
info depth 1 score cp 115 nodes 23 nps 289417 time 0 multipv 1 pv e2e4
info depth 2 score cp 40 nodes 98 nps 366837 time 0 multipv 1 pv e2e4 e7e5
info depth 3 score cp 85 nodes 549 nps 1036621 time 0 multipv 1 pv d2d4 d7d5 e2e3
info depth 4 score cp 40 nodes 2527 nps 1804291 time 1 multipv 1 pv d2d4 d7d5 e2e3 e7e6
info depth 5 score cp 86 nodes 8168 nps 2569757 time 3 multipv 1 pv d2d4 d7d5 c1f4 e7e6 e2e3
info depth 6 score cp 63 nodes 38551 nps 3327823 time 11 multipv 1 pv e2e4 d7d5 e4d5 d8d5 b1c3 d5d4
info depth 7 score cp 76 nodes 195025 nps 4110464 time 47 multipv 1 pv e2e3 d7d5 d2d4 b8c6 b1c3 c8f5 f1d3
info depth 8 score cp 62 nodes 480869 nps 4760277 time 101 multipv 1 pv e2e4 d7d5 e4d5 d8d5 d2d4 e7e5 g1f3 e5e4
info depth 9 score cp 77 nodes 1778847 nps 5670535 time 313 multipv 1 pv e2e4 b8c6 b1c3 e7e5 g1f3 f8c5 f1c4 d7d6 d2d3
info depth 10 score cp 77 nodes 6170841 nps 6068613 time 1016 multipv 1 pv e2e4 e7e6 g1f3 f8e7 b1c3 d7d5 d2d4 f7f5 e4f5 e6f5
info depth 11 score cp 76 nodes 14033521 nps 6177884 time 2271 multipv 1 pv e2e4 d7d5 e4d5 d8d5 g1e2 b8c6 b1c3 d5h5 d2d3 e7e5 c1e3
bestmove e2e4 ponder d7d5



setoption name Hash value 128
go
info depth 1 time 0 nodes 2 nps 0 score cp 10 pv a2a4
info depth 1 time 16 nodes 6 nps 375 score cp 24 pv d2d4
info depth 1 time 16 nodes 8 nps 500 score cp 25 pv e2e4
info depth 1 time 16 nodes 22 nps 1375 score cp 26 pv b1c3
info depth 2 time 16 nodes 49 nps 3062 score cp 0 pv b1c3 b8c6
info depth 3 time 16 nodes 153 nps 9562 score cp 26 pv b1c3 b8c6 g1f3
info depth 4 time 16 nodes 304 nps 19000 score cp 0 pv b1c3 b8c6 g1f3 g8f6
info depth 5 time 16 nodes 2469 nps 154312 score cp 24 pv b1c3 g8f6 g1f3 b8c6 d2d4
info depth 5 time 16 nodes 4834 nps 302125 score cp 27 pv d2d4 g8f6 c1f4 f6d5 g1h3
info depth 6 time 31 nodes 13942 nps 449741 score cp 0 pv d2d4 d7d5 c1f4 c8f5 b1c3 b8c6
info depth 7 time 31 nodes 46025 nps 1484677 score cp 24 pv d2d4 b8c6 b1c3 e7e6g1f3 f8d6 e2e4
info depth 8 time 63 nodes 162079 nps 2572682 score cp 0 pv d2d4 d7d5 c1f4 c8f5b1c3 b8c6 g1f3 g8f6
info depth 9 time 109 nodes 384900 nps 3531192 score cp 14 pv d2d4 g8f6 g1f3 d7d6 b1c3 c8f5 f3h4 f5e4 c1f4
info depth 9 time 141 nodes 537906 nps 3814936 score cp 17 pv b1c3 d7d5 g1f3 b8c6 e2e3 e7e5 f1b5 d5d4 c3e4
info depth 10 time 297 nodes 1212162 nps 4081353 score cp 4 pv b1c3 d7d5 e2e3 b8c6 g1f3 g8f6 f1b5 c8d7 e1g1 d7f5 b5c6 b7c6
info depth 10 time 547 nodes 2401928 nps 4391093 score cp 6 pv e2e4 e7e5 g1f3 b8c6 b1c3 g8f6 d2d4 e5d4 f3d4 f8d6
info depth 11 time 1172 nodes 5392866 nps 4601421 score cp 10 pv e2e4 d7d5 e4d5 d8d5 b1c3 d5e6 g1e2 g8f6 d2d4 f6d5 c1g5 b8c6
info depth 11 time 1359 nodes 6256718 nps 4603913 score cp 18 pv b1c3 d7d5 g1f3 b8c6 d2d4 c8f5 c1f4 g8f6 e2e3 f6h5 f1d3 h5f4 e3f4
info depth 12 time 2578 nodes 12119464 nps 4701110 score cp 8 pv b1c3 d7d5 d2d4 g8f6 c1f4 c8f5 e2e3 b8c6 f1b5 d8d7 g1f3 e7e6
info depth 13 time 6859 nodes 32413941 nps 4725753 score cp 14 pv b1c3 e7e5 e2e4 g8f6 f1c4 f8c5 a2a3 b8c6 b2b4 c5d6 g1f3 a7a5 b4b5
info depth 13 time 10359 nodes 49196396 nps 4749145 score cp 18 pv g1f3 g8f6 b1c3 d7d5 d2d4 b8c6 c1f4 f6h5 e2e3 h5f4 e3f4 c8f5 f1d3

fasm chess engine
go
info depth 1 score cp 115 nodes 23 nps 537205 time 0 multipv 1 pv e2e4
info depth 2 score cp 40 nodes 98 nps 403122 time 0 multipv 1 pv e2e4 e7e5
info depth 3 score cp 85 nodes 521 nps 1075457 time 0 multipv 1 pv d2d4 d7d5 e2e3
info depth 4 score cp 40 nodes 2330 nps 1735964 time 1 multipv 1 pv d2d4 d7d5 e2e3 e7e6
info depth 5 score cp 86 nodes 6018 nps 2270123 time 2 multipv 1 pv d2d4 d7d5 c1f4 e7e6 e2e3
info depth 6 score cp 40 nodes 22615 nps 3032486 time 7 multipv 1 pv d2d4 d7d5 c1f4 c8f5 e2e3 e7e6
info depth 7 score cp 75 nodes 47626 nps 3465980 time 13 multipv 1 pv d2d4 d7d5 g1f3 c8f5 c1f4 e7e6 e2e3
info depth 8 score cp 55 nodes 94739 nps 3756129 time 25 multipv 1 pv d2d4 d7d5 e2e3 e7e6 f1b5 c7c6 b5d3 f8b4 c1d2 b4d6
info depth 9 score cp 77 nodes 229128 nps 4175556 time 54 multipv 1 pv d2d4 d7d5 e2e3 e7e6 b1c3 g8f6 f1d3 f8d6 g1f3
info depth 10 score cp 71 nodes 643151 nps 4920339 time 130 multipv 1 pv d2d4 d7d5 b1c3 c8f5 e2e4 d5e4 g2g4 f5g6 f1b5 c7c6 b5c4
info depth 11 score cp 77 nodes 3054434 nps 5889529 time 518 multipv 1 pv d2d4 d7d5 b1c3 b8c6 e2e4 e7e6 c1e3 d5e4 c3e4 g8f6 f2f3 f6e4 f3e4
info depth 12 score cp 64 nodes 6912649 nps 6073058 time 1138 multipv 1 pv d2d4 d7d5 b1c3 g8f6 c1f4 b8c6 c3b5 e7e5 d4e5 f6e4 e2e3 f8c5
bestmove d2d4 ponder d7d5

fasm chess engine
go
info depth 1 score cp 115 nodes 23 nps 329546 time 0 multipv 1 pv e2e4
info depth 2 score cp 40 nodes 94 nps 365922 time 0 multipv 1 pv e2e4 e7e5
info depth 3 score cp 85 nodes 483 nps 924802 time 0 multipv 1 pv d2d4 d7d5 e2e3
info depth 4 score cp 40 nodes 1920 nps 1371176 time 1 multipv 1 pv d2d4 d7d5 e2e3 e7e6
info depth 5 score cp 86 nodes 4679 nps 1840558 time 2 multipv 1 pv d2d4 d7d5 c1f4 e7e6 e2e3
info depth 6 score cp 40 nodes 14616 nps 2381586 time 6 multipv 1 pv d2d4 d7d5 c1f4 c8f5 e2e3 e7e6
info depth 7 score cp 79 nodes 22286 nps 2597840 time 8 multipv 1 pv d2d4 d7d5 b1c3 e7e6 e2e4 g8f6 f2f3 d5e4 f3e4
info depth 8 score cp 54 nodes 43241 nps 2820551 time 15 multipv 1 pv d2d4 d7d5 c1f4 g8f6 e2e3 b8c6 f1d3 e7e6
info depth 9 score cp 75 nodes 116510 nps 3195500 time 36 multipv 1 pv d2d4 d7d5 g1f3 e7e6 b1c3 b8c6 e2e4 g8f6 f1d3 d5e4 d3e4 f6e4 c3e4
info depth 10 score cp 56 nodes 296507 nps 3799227 time 78 multipv 1 pv d2d4 d7d5 c1f4 g8f6 e2e3 e7e6 b1c3 b8c6 f1d3 f8d6
info depth 11 score cp 67 nodes 881638 nps 4715428 time 186 multipv 1 pv d2d4 d7d5 c1f4 e7e6 e2e3 f8b4 b1d2 b8c6 c2c3 b4d6 f1d3 g8f6
info depth 12 score cp 54 nodes 2787963 nps 5200937 time 536 multipv 1 pv d2d4 d7d5 c1f4 e7e6 e2e3 b8c6 f1b5 c8d7 g1f3 a7a6 b5d3 g8f6
info depth 13 score cp 69 nodes 11792546 nps 5513147 time 2138 multipv 1 pv d2d4 d7d5 c1f4 e7e6 g1f3 f8b4 b1d2 g8f6 e2e3 e8g8 f1d3 b8c6 e1g1
 c8d7
bestmove d2d4 ponder d7d5






_EvaluatePosition:	 ; in rbp address of state
			; out eax evaluation of position

		       push  rbp
			mov  rbp,[rbp+POS.STATE_PTR]
		       push  rsi rdi rbx r12 r13 r14 r15

		; rdi holds all pieces
			mov  rdi,qword[rbp+STATE.WPIECES]
			 or  rdi,qword[rbp+STATE.BPIECES]

		; eax holds the score
		      movzx  eax,word[rbp+STATE.WMSCORE]
		      movzx  ecx,word[rbp+STATE.BMSCORE]
			sub  eax,ecx

	; evaluate mobility
			cmp  eax,-200
			 jl  .SkipMobility
			cmp  eax,+200
			 jg  .SkipMobility

		; bishops
			mov  rsi,qword[rbp+STATE.WBISHOPS]
			 or  rsi,qword[rbp+STATE.BBISHOPS]
			bsf  rcx,rsi
			 jz  .BishopsDone
    .Bishops:	      _blsr  rsi,rsi,r8
	      BishopAttacks  rdx,rcx,rdi,r8,r9,r10,r11
		    _popcnt  rdx,rdx,r8
			 bt  qword[rbp+STATE.BBISHOPS],rcx
			sbb  rbx,rbx
			xor  rdx,rbx
			sub  rdx,rbx
			lea  eax,[rax+4*rdx]
			bsf  rcx,rsi
			jnz  .Bishops
    .BishopsDone:

		; rooks
			mov  rsi,qword[rbp+STATE.WROOKS]
			 or  rsi,qword[rbp+STATE.BROOKS]
			bsf  rcx,rsi
			 jz  .RooksDone
    .Rooks:	      _blsr  rsi,rsi,r8
		RookAttacks  rdx,rcx,rdi,r8,r9,r10,r11
		    _popcnt  rdx,rdx,r8
			 bt  qword[rbp+STATE.BROOKS],rcx
			sbb  rbx,rbx
			xor  rdx,rbx
			sub  rdx,rbx
			lea  eax,[rax+2*rdx]
			bsf  rcx,rsi
			jnz  .Rooks
    .RooksDone:


		; queens
			mov  rsi,qword[rbp+STATE.WQUEENS]
			 or  rsi,qword[rbp+STATE.BQUEENS]
			bsf  rcx,rsi
			 jz  .QueensDone
    .Queens:	      _blsr  rsi,rsi,r8
		RookAttacks  rdx,rcx,rdi,r8,r9,r10,r11
		    _popcnt  rdx,rdx,r8
			 bt  qword[rbp+STATE.BQUEENS],rcx
			sbb  rbx,rbx
			xor  rdx,rbx
			sub  rdx,rbx
			lea  eax,[rax+rdx]
			bsf  rcx,rsi
			jnz  .Queens
    .QueensDone:

    .SkipMobility:

	; evaluate piece scores
		      movsx  ecx,word[rbp+STATE.WPST]
			add  eax,ecx
		      movsx  ecx,word[rbp+STATE.BPST]
			sub  eax,ecx

	; evaluate pawns

		; r14 = all pawns
			mov  r14,qword[rbp+STATE.WPAWNS]
			 or  r14,qword[rbp+STATE.BPAWNS]

		; r13 - white pawns
			mov  r13,qword[rbp+STATE.WPAWNS]

		; white pawn positional bonuses
			mov  rbx,[rbp+STATE.WPAWNS]
			bsf  rcx,rbx
			 jz  .WhitePawnsDone
    .WhitePawns:      _blsr  rbx,rbx,r8
		     ; ecx = sq
		     ; esi = rank
			mov  esi,ecx
			shr  esi,3
			xor  esi,7
		       imul  esi,PASSED_PAWN_BONUS

		;      movsx  edx,byte[WhitePawnsPosBonus+rcx]
		;        add  eax,edx

			mov  rdx,r13
			and  rdx,qword[WhiteDoubledPawns+8*rcx]
			neg  rdx
			sbb  edx,edx
			and  edx,DOUBLED_PAWN_PENALTY
			sub  eax,edx

			mov  rdx,r13
			and  rdx,qword[IsolatedPawns+8*rcx]
			cmp  rdx,1
			sbb  edx,edx
			and  edx,ISOLATED_PAWN_PENALTY
			sub  eax,edx

			mov  rdx,r13
			and  rdx,qword[BlackPassedPawns+8*rcx]
			cmp  rdx,1
			sbb  edx,edx
			and  edx,BACKWARD_PAWN_PENALTY
			sub  eax,edx

			mov  rdx,r14
			and  rdx,qword[WhitePassedPawns+8*rcx]
			cmp  rdx,1
			sbb  edx,edx
			and  edx,esi
			add  eax,edx

			bsf  rcx,rbx
			jnz  .WhitePawns
    .WhitePawnsDone:

		; r14 - white pawns
			mov  r13,qword[rbp+STATE.BPAWNS]

		; black pawn positional bonuses
			mov  rbx,[rbp+STATE.BPAWNS]
			bsf  rcx,rbx
			 jz  .BlackPawnsDone
    .BlackPawns:      _blsr  rbx,rbx,r8
		     ; ecx = sq
		     ; esi = rank
			mov  esi,ecx
			shr  esi,3
		       imul  esi,PASSED_PAWN_BONUS

		  ;    movsx  edx,byte[BlackPawnsPosBonus+rcx]
		  ;      sub  eax,edx

			mov  rdx,r13
			and  rdx,qword[BlackDoubledPawns+8*rcx]
			neg  rdx
			sbb  edx,edx
			and  edx,DOUBLED_PAWN_PENALTY
			add  eax,edx

			mov  rdx,r13
			and  rdx,qword[IsolatedPawns+8*rcx]
			cmp  rdx,1
			sbb  edx,edx
			and  edx,ISOLATED_PAWN_PENALTY
			add  eax,edx

			mov  rdx,r13
			and  rdx,qword[WhitePassedPawns+8*rcx]
			cmp  rdx,1
			sbb  edx,edx
			and  edx,BACKWARD_PAWN_PENALTY
			add  eax,edx

			mov  rdx,r14
			and  rdx,qword[BlackPassedPawns+8*rcx]
			cmp  rdx,1
			sbb  edx,edx
			and  edx,esi
			sub  eax,edx

			bsf  rcx,rbx
			jnz  .BlackPawns
    .BlackPawnsDone:


	; evaluate kings
			bsf  rcx,qword[rbp+STATE.WKING]
			cmp  qword[rbp+STATE.BQUEENS],0
			 je  .WhiteKing
			cmp  word[rbp+STATE.BMSCORE],1600
			 ja  .WhiteKingDone
    .WhiteKing: 	mov  ecx,dword[pst_K+4*rcx]
			neg  ecx
			lea  eax,[rax+2*rcx]
    .WhiteKingDone:

			bsf  rcx,qword[rbp+STATE.BKING]
			cmp  qword[rbp+STATE.WQUEENS],0
			 je  .BlackKing
			cmp  word[rbp+STATE.WMSCORE],1600
			 ja  .BlackKingDone
    .BlackKing: 	mov  ecx,dword[pst_K+4*rcx]
			lea  eax,[rax+2*rcx]
    .BlackKingDone:


			pop  r15 r14 r13 r12 rbx rdi rsi
			pop  rbp
			ret
