Chess - Programming - Move Generation

//  bit | 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
//      |UGM|VGM|GM |UBM|VBM|BM |                                       |Bm |Nm |Rm |Hm |PV |Km |F  |S  |M  |DC |C  |PN |PB |PR |PQ |PRO|CQ |CK |Cm |EP |PC |NC |BC |RC |QC |KC |Ca |QM |DP |P  |N  |B  |R  |Q  |K  |WB |From               |To               |

// bit   0- 5  : To      : Destination square (from 0 to 63).
// bit   6-11  : From    : Origin square (from 0 to 63).
// bit     12  : WB      : Color doing the move. 0=WHITE 1=BLACK.
// bit     13  : K       : King Move.
// bit     14  : Q       : Queen Move.
// bit     15  : R       : Rook Move.
// bit     16  : B       : Bishop Move.
// Bit     17  : N       : Knight Move.
// Bit     18  : P       : Pawn Move.
// Bit     19  : DP      : Double Pawn Move.
// Bit     20  : QM      : Quite Move. (Not capture, castling, pawn promotion, or check).
// Bit     21  : Ca      : Capture. (Including En-Passant Capture).
// Bit     22  : KC      : King Capture.
// Bit     23  : QC      : Queen Capture.
// Bit     24  : RC      : Rook Capture.
// Bit     25  : BC      : Bishop Capture.
// Bit     26  : NC      : Knight Capture.
// Bit     27  : PC      : Pawn Capture.
// Bit     28  : EP      : En-Passant Capture.
// Bit     29  : Cm      : Castling Move.
// Bit     30  : CK      : Castling Move. King Side.
// Bit     31  : CQ      : Castling Move. Queen Side.
// Bit     32  : PRO     : Promotion Move.
// Bit     33  : PQ      : Promotion Move. Queen.
// Bit     34  : PR      : Promotion Move. Rook.
// Bit     35  : PB      : Promotion Move. Bishop.
// Bit     36  : PN      : Promotion Move. Knight.
// Bit     37  : C       : Checking Move.
// Bit     38  : DC      : Double Checking Move.
// Bit     39  : M       : Mating Move.
// Bit     40  : S       : Stalemating Move.
// Bit     41  : F       : Forced Move. Only 1 Move possible.
// Bit     42  : Km      : Killer Move.  A quiet move which caused a beta-cutoff in a sibling Cut-node.
// Bit     43  : PV      : PV Move.  Part of the principal variation and therefore a best move found in the previous iteration.
// Bit     44  : Hm      : Hash Move.  A move probed from the transposition table.
// Bit     45  : Rm      : Refutation Move.  A move which fails high at Cut-nodes.
// Bit     46  : Nm      : Null Move.
// Bit     47  : Bm      : Book Move.

// Bit     58  : BM      : Bad Move.  ?!  When score decreases with 0.50.
// Bit     59  : VBM     : Very Bad Move.  ? when score decreases with 1.00 or more.
// Bit     60  : UBM     : Ultra Bad Move.  ?? - when score decreases with 2.00 or more.
// Bit     61  : GM      : Good Move.  !? When score increases with 0.50.
// Bit     62  : VGM     : Very Good Move.  ! - when score increases with 1.00 or more.
// Bit     63  : UGM     : Ultra Good Move.  !! - when score increases with 2.00 or more.