// File: MatthewZMD[P]TetrisDual/textdisplay.cc
// Function: TextDisplay::TextDisplay(int, int, int)
TextDisplay::TextDisplay(int numberOfPlayers, int numberOfRows, int numberOfColumns){
	for (int i = 0; i < numberOfPlayers; ++i) {
		level.emplace_back(0);
		score.emplace_back(0);

		boardData.emplace_back(std::vector<std::vector<char>>{});
		for (int r = 0; r < numberOfRows; ++r) {
			boardData.at(i).emplace_back(std::vector<char>{});
			for (int c = 0; c < numberOfColumns; ++c) {
				boardData.at(i).at(r).emplace_back(' ');
			}
		}

		nextType.emplace_back(CellType::E);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x10050
movq -0x90(%rbp), %rdi
leaq 0x1e222(%rip), %rax     # 0x43cf8
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x8, %rdi
movq %rdi, -0xa8(%rbp)
callq 0x269e0
movq -0x90(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0xa0(%rbp)
callq 0x269e0
movq -0x90(%rbp), %rdi
addq $0x38, %rdi
movq %rdi, -0x98(%rbp)
callq 0x26a00
movq -0x90(%rbp), %rdi
addq $0x50, %rdi
movq %rdi, -0x88(%rbp)
callq 0x249b0
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x25d20
movq -0x90(%rbp), %rdi
addq $0x8, %rdi
movl $0x0, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x26a20
jmp 0x25b62
movq -0x90(%rbp), %rdi
addq $0x20, %rdi
movl $0x0, -0x30(%rbp)
leaq -0x30(%rbp), %rsi
callq 0x26a20
jmp 0x25b7f
movq -0x90(%rbp), %rax
addq $0x38, %rax
movq %rax, -0xb8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq $0x0, -0x40(%rbp)
leaq -0x50(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0xee90
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0x26aa0
jmp 0x25bc5
leaq -0x50(%rbp), %rdi
callq 0xc240
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0x25cf3
movq -0x90(%rbp), %rdi
addq $0x38, %rdi
movslq -0x18(%rbp), %rsi
callq 0x26b20
movq %rax, -0xc0(%rbp)
jmp 0x25bfe
xorps %xmm0, %xmm0
movaps %xmm0, -0x70(%rbp)
movq $0x0, -0x60(%rbp)
leaq -0x70(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x141a0
movq -0xc0(%rbp), %rdi
movq -0xc8(%rbp), %rsi
callq 0x26b60
jmp 0x25c32
leaq -0x70(%rbp), %rdi
callq 0xca40
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x25ce3
movq -0x90(%rbp), %rdi
addq $0x38, %rdi
movslq -0x18(%rbp), %rsi
callq 0x26b20
movq %rax, -0xd0(%rbp)
jmp 0x25c6b
movq -0xd0(%rbp), %rdi
movslq -0x54(%rbp), %rsi
callq 0x26be0
movq %rax, -0xd8(%rbp)
jmp 0x25c84
movq -0xd8(%rbp), %rdi
movb $0x20, -0x75(%rbp)
leaq -0x75(%rbp), %rsi
callq 0x141c0
jmp 0x25c9a
jmp 0x25c9c
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x25c42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x25d29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xc240
jmp 0x25d29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xca40
jmp 0x25d29
jmp 0x25ce5
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x25bd5
movq -0x90(%rbp), %rdi
addq $0x50, %rdi
movl $0x7, -0x7c(%rbp)
leaq -0x7c(%rbp), %rsi
callq 0x26c20
jmp 0x25d10
jmp 0x25d12
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x25b39
addq $0xe0, %rsp
popq %rbp
retq
movq -0x88(%rbp), %rdi
callq 0x15060
movq -0x98(%rbp), %rdi
callq 0x1ca20
movq -0xa0(%rbp), %rdi
callq 0x1ca80
movq -0xa8(%rbp), %rdi
callq 0x1ca80
movq -0x28(%rbp), %rdi
callq 0x6630
nopw %cs:(%rax,%rax)