// File: ShootMe[P]Klondike-Solver/Solitaire.cpp
// Function: Solitaire::GetPysol[abi:cxx11]()
string Solitaire::GetPysol() {
	stringstream cardSet;
	cardSet << "Talon: ";
	for (int i = 28; i < 52; i++) {
		Card c = cards[i];

		cardSet << RANKS[c.Rank] << SUITS[c.Suit];
		if (i < 51) { cardSet << " "; }
	}

	const int order[28] = { 0, 1, 7, 2, 8, 13, 3, 9, 14, 18, 4, 10, 15, 19, 22, 5, 11, 16, 20, 23, 25, 6, 12, 17, 21, 24, 26, 27 };
	for (int i = 0, j = 0; j < 7; j++) {
		cardSet << '\n';
		for (int k = 0; k <= j; k++, i++) {
			Card c = cards[order[i]];

			if (k < j) {
				cardSet << '<' << RANKS[c.Rank] << SUITS[c.Suit] << "> ";
			} else {
				cardSet << RANKS[c.Rank] << SUITS[c.Suit];
			}
		}
	}
	return cardSet.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x280, %rsp            # imm = 0x280
movq %rdi, -0x250(%rbp)
movq %rdi, %rax
movq %rax, -0x248(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x240(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x3170
leaq -0x188(%rbp), %rdi
leaq 0x7fdd(%rip), %rsi      # 0x14a46
callq 0x3230
jmp 0xca70
movl $0x1c, -0x1a8(%rbp)
cmpl $0x34, -0x1a8(%rbp)
jge 0xcb55
movq -0x240(%rbp), %rax
movslq -0x1a8(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movw 0x1740(%rax,%rcx,2), %dx
movw %dx, -0x1ac(%rbp)
movl 0x173c(%rax,%rcx,2), %eax
movl %eax, -0x1b0(%rbp)
leaq -0x188(%rbp), %rdi
movzbl -0x1af(%rbp), %eax
leaq 0x7e06(%rip), %rcx      # 0x148d0
movsbl (%rax,%rcx), %esi
callq 0x32d0
movq %rax, -0x258(%rbp)
jmp 0xcadc
movq -0x258(%rbp), %rdi
movzbl -0x1b0(%rbp), %eax
leaq 0x7dee(%rip), %rcx      # 0x148df
movsbl (%rax,%rcx), %esi
callq 0x32d0
jmp 0xcafc
cmpl $0x33, -0x1a8(%rbp)
jge 0xcb3f
leaq -0x188(%rbp), %rdi
leaq 0x7f14(%rip), %rsi      # 0x14a27
callq 0x3230
jmp 0xcb1a
jmp 0xcb3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x3190
jmp 0xcd35
jmp 0xcb41
movl -0x1a8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a8(%rbp)
jmp 0xca7a
leaq -0x220(%rbp), %rdi
leaq 0x7d8d(%rip), %rsi      # 0x148f0
movl $0x70, %edx
callq 0x31d0
movl $0x0, -0x224(%rbp)
movl $0x0, -0x228(%rbp)
cmpl $0x7, -0x228(%rbp)
jge 0xcd04
leaq -0x188(%rbp), %rdi
movl $0xa, %esi
callq 0x32d0
jmp 0xcba1
movl $0x0, -0x22c(%rbp)
movl -0x22c(%rbp), %eax
cmpl -0x228(%rbp), %eax
jg 0xccee
movq -0x240(%rbp), %rax
addq $0x173c, %rax           # imm = 0x173C
movslq -0x224(%rbp), %rcx
movslq -0x220(%rbp,%rcx,4), %rcx
imulq $0x6, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movl %ecx, -0x232(%rbp)
movw 0x4(%rax), %ax
movw %ax, -0x22e(%rbp)
movl -0x22c(%rbp), %eax
cmpl -0x228(%rbp), %eax
jge 0xcc80
leaq -0x188(%rbp), %rdi
movl $0x3c, %esi
callq 0x32d0
movq %rax, -0x260(%rbp)
jmp 0xcc1b
movq -0x260(%rbp), %rdi
movzbl -0x231(%rbp), %eax
leaq 0x7ca0(%rip), %rcx      # 0x148d0
movsbl (%rax,%rcx), %esi
callq 0x32d0
movq %rax, -0x268(%rbp)
jmp 0xcc42
movq -0x268(%rbp), %rdi
movzbl -0x232(%rbp), %eax
leaq 0x7c88(%rip), %rcx      # 0x148df
movsbl (%rax,%rcx), %esi
callq 0x32d0
movq %rax, -0x270(%rbp)
jmp 0xcc69
movq -0x270(%rbp), %rdi
leaq 0x7dd9(%rip), %rsi      # 0x14a50
callq 0x3230
jmp 0xcc7e
jmp 0xccc9
leaq -0x188(%rbp), %rdi
movzbl -0x231(%rbp), %eax
leaq 0x7c3b(%rip), %rcx      # 0x148d0
movsbl (%rax,%rcx), %esi
callq 0x32d0
movq %rax, -0x278(%rbp)
jmp 0xcca7
movq -0x278(%rbp), %rdi
movzbl -0x232(%rbp), %eax
leaq 0x7c23(%rip), %rcx      # 0x148df
movsbl (%rax,%rcx), %esi
callq 0x32d0
jmp 0xccc7
jmp 0xccc9
jmp 0xcccb
movl -0x22c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x22c(%rbp)
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0xcbab
jmp 0xccf0
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0xcb81
movq -0x250(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3220
jmp 0xcd19
leaq -0x198(%rbp), %rdi
callq 0x3190
movq -0x248(%rbp), %rax
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
movq -0x1a0(%rbp), %rdi
callq 0x33d0
nopw %cs:(%rax,%rax)