Somehow, CreateCard() functions takes two arguments: iterator divided by 52 and a remainder of the division operation.
Hard to say, why they did so.
Solitaire can't allow more than 52 cards, so the last argument is senseless, it's always zero.

But when I patch "cmp edi, 52" instruction at 0x1000366B5 to be "cmp edi, 53", I found that there are now 53 cards.
The last one is "two of clubs", because it's numbered as 0th card.

During the last iteration, 0x52 is divided by 0x52, remainder is zero, so 0th card is added twice.