// File: MatthewZMD[P]TetrisDual/graphicsdisplay.cc
// Function: GraphicsDisplay::notify(Subject&)
void GraphicsDisplay::GraphicsDisplay::notify(Subject& s) {
	Board & b = dynamic_cast<Board&>(s);
	BoardInfo &bi = dynamic_cast<BoardInfo&>(b.getInfo());
	int player = bi.player;
	std::string level = std::to_string(bi.level);
	std::string score = std::to_string(bi.score);
	if (player == 0) {
		xw.fillRectangle(0, 13, 250, 27, Xwindow::Orange);
		xw.drawBigString(15, 40, "Level: " + level, Xwindow::Black);
		xw.fillRectangle(0, 58, 250, 27, Xwindow::Orange);
		xw.drawBigString(15 ,85, "Score: " + score, Xwindow::Black);
		for (int i = 0; i < 18; ++i) {
			for (int j = 0; j < 11; ++j) {
				char current = bi.boardData[i][j];
				xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::White);
				if (current == 'I') {
					xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Brown);
				} else if (current == 'J') {
					xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Red);
				} else if (current == 'L') {
					xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Cyan);
				} else if (current == 'O') {
                                        xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::DarkGreen);
				} else if (current == 'S') {
					xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Magenta);
				} else if (current == 'Z') {
					xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Blue);
				} else if (current == 'T') {
                    xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Green);
				} else if (current == '*') {
                    xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Brown);
					xw.drawString(24 + 20 * j, 115 + 20 * i, "*", Xwindow::White);
				} else if (current == '?') {
                    xw.fillRectangle(15 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Black);
					xw.drawString(24 + 20 * j, 115 + 20 * i, "?", Xwindow::White);
				}
				xw.fillRectangle(15 + 20 * j + 11, 100 + 20 * i + 1, 7, 7, Xwindow::White);
				//xw.fillRectangle(15 + 20 * j + 3, 100 + 20 * i + 15, 3, 3, Xwindow::White);
			    

			}
		}
		xw.drawBigString(15, 500, "Next:", Xwindow::Black);
		CellType type = bi.nextType;
		for (int i = 0; i < 2; ++i) {
                   for (int j = 0; j < 4; ++j) {
                        xw.fillRectangle(65 + 30 * j, 510 + 30 * i, 30, 30, Xwindow::Orange);
                   }
                }

		switch(type) {
			case CellType::I:
				xw.fillRectangle(65, 540, 30, 30, Xwindow::Brown);
				xw.fillRectangle(95, 540, 30, 30, Xwindow::Brown);
                xw.fillRectangle(125, 540, 30, 30, Xwindow::Brown);
                xw.fillRectangle(155, 540, 30, 30, Xwindow::Brown);
                break;
			case CellType::J:
				xw.fillRectangle(65, 510, 30, 30, Xwindow::Red);
                xw.fillRectangle(65, 540, 30, 30, Xwindow::Red);
                xw.fillRectangle(95, 540, 30, 30, Xwindow::Red);
                xw.fillRectangle(125, 540, 30, 30, Xwindow::Red);
                break;
			case CellType::L:
				xw.fillRectangle(125, 510, 30, 30, Xwindow::Cyan);
                xw.fillRectangle(125, 540, 30, 30, Xwindow::Cyan);
                xw.fillRectangle(65, 540, 30, 30, Xwindow::Cyan);
                xw.fillRectangle(95, 540, 30, 30, Xwindow::Cyan);
                break;
			case CellType::O:
				xw.fillRectangle(65, 510, 30, 30, Xwindow::DarkGreen);
                xw.fillRectangle(95, 510, 30, 30, Xwindow::DarkGreen);
                xw.fillRectangle(65, 540, 30, 30, Xwindow::DarkGreen);
                xw.fillRectangle(95, 540, 30, 30, Xwindow::DarkGreen);
                break;
			case CellType::S:
				xw.fillRectangle(65, 540, 30, 30, Xwindow::Magenta);
                xw.fillRectangle(95, 510, 30, 30, Xwindow::Magenta);
                xw.fillRectangle(95, 540, 30, 30, Xwindow::Magenta);
                xw.fillRectangle(125, 510, 30, 30, Xwindow::Magenta);
                break;
			case CellType::Z:
				xw.fillRectangle(65, 510, 30, 30, Xwindow::Blue);
                xw.fillRectangle(95, 510, 30, 30, Xwindow::Blue);
                xw.fillRectangle(95, 540, 30, 30, Xwindow::Blue);
                xw.fillRectangle(125, 540, 30, 30, Xwindow::Blue);
                break;
			case CellType::T:
				xw.fillRectangle(65, 510, 30, 30, Xwindow::Green);
                xw.fillRectangle(95, 510, 30, 30, Xwindow::Green);
                xw.fillRectangle(125, 510, 30, 30, Xwindow::Green);
                xw.fillRectangle(95, 540, 30, 30, Xwindow::Green);
                break;
            case CellType::E:
                break;
            case CellType::Star:
                break;
		}
		for (int i = 0; i < 19; ++i) {
			xw.drawLine(15, 100 + 20 * i, 235, 100 + 20 * i);
                                                xw.drawLine(15, 100 + 20 * i - 1, 235, 100 + 20 * i - 1);

		}
		for (int j = 0; j < 12; ++j) {
			xw.drawLine(15 + 20 * j, 100, 15 + 20 * j, 460);
			 xw.drawLine(15 + 20 * j - 1, 100, 15 + 20 * j - 1, 460);
            

		}
	} else {
		xw.fillRectangle(270, 13, 250, 27, Xwindow::Orange);
		xw.drawBigString(285, 40, "Level: " + level, Xwindow::Black);
			xw.fillRectangle(270, 58, 250, 27, Xwindow::Orange);
		xw.drawBigString(285 ,85, "Score: " + score, Xwindow::Black);
        for (int i = 0; i < 18; ++i) {
            for (int j = 0; j < 11; ++j) {
                char current = bi.boardData[i][j];
		xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::White);
                if (current == 'I') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Brown);
                } else if (current == 'J') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Red);
                } else if (current == 'L') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Cyan);
                } else if (current == 'O') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::DarkGreen);
                } else if (current == 'S') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Magenta);
                } else if (current == 'Z') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Blue);
                } else if (current == 'T') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Green);
                } else if (current == '*') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Brown);
                    xw.drawString(294 + 20 * j, 115 + 20 * i, "*", Xwindow::White);
                } else if (current == '?') {
                    xw.fillRectangle(285 + 20 * j, 100 + 20 * i, 20, 20, Xwindow::Black);
                    xw.drawString(294 + 20 * j, 115 + 20 * i, "?", Xwindow::White);
                }
		xw.fillRectangle(285 + 20 * j + 11, 100 + 20 * i + 1, 7, 7, Xwindow::White);
		//xw.fillRectangle(285 + 20 * j + 3, 100 + 20 * i + 15, 3, 3, Xwindow::White);



            }
        }
        xw.drawBigString(285, 500, "Next:", Xwindow::Black);
        CellType type = bi.nextType;
	for (int i = 0; i < 2; ++i) {
		for (int j = 0; j < 4; ++j) {
			xw.fillRectangle(335 + 30 * j, 510 + 30 * i, 30, 30, Xwindow::Orange);
		}
	}
        switch(type) {
            case CellType::I:
                xw.fillRectangle(335, 540, 30, 30, Xwindow::Brown);
                xw.fillRectangle(365, 540, 30, 30, Xwindow::Brown);
                xw.fillRectangle(395, 540, 30, 30, Xwindow::Brown);
                xw.fillRectangle(425, 540, 30, 30, Xwindow::Brown);
		break;
            case CellType::J:
                xw.fillRectangle(335, 510, 30, 30, Xwindow::Red);
                xw.fillRectangle(335, 540, 30, 30, Xwindow::Red);
                xw.fillRectangle(365, 540, 30, 30, Xwindow::Red);
                xw.fillRectangle(395, 540, 30, 30, Xwindow::Red);
		break;
            case CellType::L:
                xw.fillRectangle(395, 510, 30, 30, Xwindow::Cyan);
                xw.fillRectangle(395, 540, 30, 30, Xwindow::Cyan);
                xw.fillRectangle(335, 540, 30, 30, Xwindow::Cyan);
                xw.fillRectangle(365, 540, 30, 30, Xwindow::Cyan);
		break;
            case CellType::O:
                xw.fillRectangle(335, 510, 30, 30, Xwindow::DarkGreen);
                xw.fillRectangle(365, 510, 30, 30, Xwindow::DarkGreen);
                xw.fillRectangle(335, 540, 30, 30, Xwindow::DarkGreen);
                xw.fillRectangle(365, 540, 30, 30, Xwindow::DarkGreen);
		break;
            case CellType::S:
                xw.fillRectangle(335, 540, 30, 30, Xwindow::Magenta);
                xw.fillRectangle(365, 510, 30, 30, Xwindow::Magenta);
                xw.fillRectangle(365, 540, 30, 30, Xwindow::Magenta);
                xw.fillRectangle(395, 510, 30, 30, Xwindow::Magenta);
		break;
            case CellType::Z:
                xw.fillRectangle(335, 510, 30, 30, Xwindow::Blue);
                xw.fillRectangle(365, 510, 30, 30, Xwindow::Blue);
                xw.fillRectangle(365, 540, 30, 30, Xwindow::Blue);
                xw.fillRectangle(395, 540, 30, 30, Xwindow::Blue);
                break;
	    case CellType::T:
                xw.fillRectangle(335, 510, 30, 30, Xwindow::Green);
                xw.fillRectangle(365, 510, 30, 30, Xwindow::Green);
                xw.fillRectangle(395, 510, 30, 30, Xwindow::Green);
                xw.fillRectangle(365, 540, 30, 30, Xwindow::Green);
		break;
            case CellType::E:
                break;
            case CellType::Star:
                break;
        }
        for (int i = 0; i < 19; ++i) {
            xw.drawLine(285, 100 + 20 * i, 505, 100 + 20 * i);
	     xw.drawLine(285, 100 + 20 * i - 1, 505, 100 + 20 * i - 1);


        }       

        for (int j = 0; j < 12; ++j) {
            xw.drawLine(285 + 20 * j, 100, 285 + 20 * j, 460);
	     xw.drawLine(285 + 20 * j - 1, 100, 285 + 20 * j - 1, 460);

 
        }
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2f0, %rsp            # imm = 0x2F0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x19807(%rip), %rsi     # 0x43140
leaq 0x19900(%rip), %rdx     # 0x43240
xorl %eax, %eax
movl %eax, %ecx
callq 0x63f0
movq %rax, -0x230(%rbp)
cmpq $0x0, %rax
jne 0x2995b
callq 0x6690
movq -0x230(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
callq *(%rax)
movq %rax, %rdi
leaq 0x1a027(%rip), %rsi     # 0x439a0
leaq 0x199d0(%rip), %rdx     # 0x43350
xorl %eax, %eax
movl %eax, %ecx
callq 0x63f0
movq %rax, -0x240(%rbp)
cmpq $0x0, %rax
jne 0x2999b
callq 0x6690
movq -0x240(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movl 0xc(%rax), %esi
leaq -0x48(%rbp), %rdi
callq 0x2b860
movq -0x20(%rbp), %rax
movl 0x10(%rax), %esi
leaq -0x68(%rbp), %rdi
callq 0x2b860
jmp 0x299d2
cmpl $0x0, -0x24(%rbp)
jne 0x2a8f4
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
xorl %esi, %esi
movl $0xd, %edx
movl $0xfa, %ecx
movl $0x1b, %r8d
movl $0x8, %r9d
callq 0x2c030
jmp 0x29a06
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x248(%rbp)
leaq 0x3f7f(%rip), %rsi      # 0x2d99e
leaq -0x98(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x2b980
jmp 0x29a31
movq -0x248(%rbp), %rdi
movl $0xf, %esi
movl $0x28, %edx
leaq -0x98(%rbp), %rcx
movl $0x1, %r8d
callq 0x2c670
jmp 0x29a56
leaq -0x98(%rbp), %rdi
callq 0x6230
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
xorl %esi, %esi
movl $0x3a, %edx
movl $0xfa, %ecx
movl $0x1b, %r8d
movl $0x8, %r9d
callq 0x2c030
jmp 0x29a8c
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x250(%rbp)
leaq 0x3f01(%rip), %rsi      # 0x2d9a6
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x2b980
jmp 0x29ab7
movq -0x250(%rbp), %rdi
movl $0xf, %esi
movl $0x55, %edx
leaq -0xb8(%rbp), %rcx
movl $0x1, %r8d
callq 0x2c670
jmp 0x29adc
leaq -0xb8(%rbp), %rdi
callq 0x6230
movl $0x0, -0xbc(%rbp)
cmpl $0x12, -0xbc(%rbp)
jge 0x2a168
movl $0x0, -0xc0(%rbp)
cmpl $0xb, -0xc0(%rbp)
jge 0x2a152
movq -0x20(%rbp), %rdi
addq $0x18, %rdi
movslq -0xbc(%rbp), %rsi
callq 0xc200
movq %rax, %rdi
movslq -0xc0(%rbp), %rsi
callq 0xc220
movq -0x238(%rbp), %rdi
movb (%rax), %al
movb %al, -0xc1(%rbp)
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
xorl %r9d, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29b87
movsbl -0xc1(%rbp), %eax
cmpl $0x49, %eax
jne 0x29c41
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29be0
jmp 0x2a0f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2b814
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2b80b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x6230
jmp 0x2b80b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x6230
jmp 0x2b80b
movsbl -0xc1(%rbp), %eax
cmpl $0x4a, %eax
jne 0x29c9b
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29c96
jmp 0x2a0f4
movsbl -0xc1(%rbp), %eax
cmpl $0x4c, %eax
jne 0x29cf5
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29cf0
jmp 0x2a0f2
movsbl -0xc1(%rbp), %eax
cmpl $0x4f, %eax
jne 0x29d4f
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29d4a
jmp 0x2a0f0
movsbl -0xc1(%rbp), %eax
cmpl $0x53, %eax
jne 0x29da9
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29da4
jmp 0x2a0ee
movsbl -0xc1(%rbp), %eax
cmpl $0x5a, %eax
jne 0x29e03
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29dfe
jmp 0x2a0ec
movsbl -0xc1(%rbp), %eax
cmpl $0x54, %eax
jne 0x29e5d
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29e58
jmp 0x2a0ea
movsbl -0xc1(%rbp), %eax
cmpl $0x2a, %eax
jne 0x29fa3
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29eb6
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x268(%rbp)
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x18(,%rax,4), %eax
movl %eax, -0x260(%rbp)
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x73(,%rax,4), %eax
movl %eax, -0x25c(%rbp)
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x6640
movq -0x258(%rbp), %rdx
leaq 0x3b9d(%rip), %rsi      # 0x2daba
leaq -0xe8(%rbp), %rdi
callq 0x7180
jmp 0x29f2b
movl -0x25c(%rbp), %edx
movl -0x260(%rbp), %esi
movq -0x268(%rbp), %rdi
leaq -0xe8(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2c480
jmp 0x29f4f
leaq -0xe8(%rbp), %rdi
callq 0x6230
leaq -0xe9(%rbp), %rdi
callq 0x63c0
jmp 0x2a0e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x29f92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x6230
leaq -0xe9(%rbp), %rdi
callq 0x63c0
jmp 0x2b80b
movsbl -0xc1(%rbp), %eax
cmpl $0x3f, %eax
jne 0x2a0e6
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x1, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x29ffc
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x280(%rbp)
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x18(,%rax,4), %eax
movl %eax, -0x278(%rbp)
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x73(,%rax,4), %eax
movl %eax, -0x274(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x6640
movq -0x270(%rbp), %rdx
leaq 0x31dc(%rip), %rsi      # 0x2d23f
leaq -0x110(%rbp), %rdi
callq 0x7180
jmp 0x2a071
movl -0x274(%rbp), %edx
movl -0x278(%rbp), %esi
movq -0x280(%rbp), %rdi
leaq -0x110(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2c480
jmp 0x2a095
leaq -0x110(%rbp), %rdi
callq 0x6230
leaq -0x111(%rbp), %rdi
callq 0x63c0
jmp 0x2a0e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2a0d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x6230
leaq -0x111(%rbp), %rdi
callq 0x63c0
jmp 0x2b80b
jmp 0x2a0e8
jmp 0x2a0ea
jmp 0x2a0ec
jmp 0x2a0ee
jmp 0x2a0f0
jmp 0x2a0f2
jmp 0x2a0f4
jmp 0x2a0f6
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0xc0(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x1a(,%rax,4), %esi
movl -0xbc(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x65(,%rax,4), %edx
movl $0x7, %r8d
xorl %r9d, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a13c
jmp 0x2a13e
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x29b09
jmp 0x2a154
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0x29af2
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x290(%rbp)
leaq -0x139(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x6640
movq -0x288(%rbp), %rdx
leaq 0x3771(%rip), %rsi      # 0x2d90c
leaq -0x138(%rbp), %rdi
callq 0x7180
jmp 0x2a1a9
movq -0x290(%rbp), %rdi
movl $0xf, %esi
movl $0x1f4, %edx            # imm = 0x1F4
leaq -0x138(%rbp), %rcx
movl $0x1, %r8d
callq 0x2c670
jmp 0x2a1ce
leaq -0x138(%rbp), %rdi
callq 0x6230
leaq -0x139(%rbp), %rdi
callq 0x63c0
movq -0x20(%rbp), %rax
movl 0x30(%rax), %eax
movl %eax, -0x140(%rbp)
movl $0x0, -0x144(%rbp)
cmpl $0x2, -0x144(%rbp)
jge 0x2a2c9
movl $0x0, -0x148(%rbp)
cmpl $0x4, -0x148(%rbp)
jge 0x2a2b3
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x148(%rbp), %esi
movl %esi, %eax
addl %eax, %eax
shll $0x5, %esi
subl %eax, %esi
addl $0x41, %esi
movl -0x144(%rbp), %edx
movl %edx, %eax
addl %eax, %eax
shll $0x5, %edx
subl %eax, %edx
addl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x8, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a269
jmp 0x2a26b
movl -0x148(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x148(%rbp)
jmp 0x2a214
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2a2a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x6230
leaq -0x139(%rbp), %rdi
callq 0x63c0
jmp 0x2b80b
jmp 0x2a2b5
movl -0x144(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x144(%rbp)
jmp 0x2a1fd
movl -0x140(%rbp), %eax
movq %rax, -0x298(%rbp)
subq $0x8, %rax
ja 0x2a7cf
movq -0x298(%rbp), %rax
leaq 0x367a(%rip), %rcx      # 0x2d968
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a322
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a34d
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x7d, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a378
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x9b, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a3a3
jmp 0x2a7cf
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a3d3
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a3fe
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a429
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x7d, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a454
jmp 0x2a7cf
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x7d, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a484
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x7d, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a4af
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a4da
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a505
jmp 0x2a7cf
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a535
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a560
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a58b
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a5b6
jmp 0x2a7cf
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a5e6
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a611
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a63c
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x7d, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a667
jmp 0x2a7cf
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a697
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a6c2
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a6ed
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x7d, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a718
jmp 0x2a7cf
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x41, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a748
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a773
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x7d, %esi
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a79e
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x5f, %esi
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2a7c9
jmp 0x2a7cf
jmp 0x2a7cf
jmp 0x2a7cf
movl $0x0, -0x14c(%rbp)
cmpl $0x13, -0x14c(%rbp)
jge 0x2a860
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x14c(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %r8d
movl $0xf, %esi
movl $0xeb, %ecx
movl %r8d, %edx
callq 0x2c290
jmp 0x2a816
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x14c(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x63(,%rax,4), %r8d
movl $0xf, %esi
movl $0xeb, %ecx
movl %r8d, %edx
callq 0x2c290
jmp 0x2a84a
jmp 0x2a84c
movl -0x14c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14c(%rbp)
jmp 0x2a7d9
movl $0x0, -0x150(%rbp)
cmpl $0xc, -0x150(%rbp)
jge 0x2a8ef
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x150(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xf(,%rax,4), %ecx
movl $0x64, %edx
movl $0x1cc, %r8d            # imm = 0x1CC
movl %ecx, %esi
callq 0x2c290
jmp 0x2a8a6
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x150(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0xe(,%rax,4), %ecx
movl $0x64, %edx
movl $0x1cc, %r8d            # imm = 0x1CC
movl %ecx, %esi
callq 0x2c290
jmp 0x2a8d9
jmp 0x2a8db
movl -0x150(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x150(%rbp)
jmp 0x2a86a
jmp 0x2b7f0
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x10e, %esi            # imm = 0x10E
movl $0xd, %edx
movl $0xfa, %ecx
movl $0x1b, %r8d
movl $0x8, %r9d
callq 0x2c030
jmp 0x2a921
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x2a0(%rbp)
leaq 0x3064(%rip), %rsi      # 0x2d99e
leaq -0x170(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x2b980
jmp 0x2a94c
movq -0x2a0(%rbp), %rdi
movl $0x11d, %esi            # imm = 0x11D
movl $0x28, %edx
leaq -0x170(%rbp), %rcx
movl $0x1, %r8d
callq 0x2c670
jmp 0x2a971
leaq -0x170(%rbp), %rdi
callq 0x6230
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x10e, %esi            # imm = 0x10E
movl $0x3a, %edx
movl $0xfa, %ecx
movl $0x1b, %r8d
movl $0x8, %r9d
callq 0x2c030
jmp 0x2a9aa
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x2a8(%rbp)
leaq 0x2fe3(%rip), %rsi      # 0x2d9a6
leaq -0x190(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x2b980
jmp 0x2a9d5
movq -0x2a8(%rbp), %rdi
movl $0x11d, %esi            # imm = 0x11D
movl $0x55, %edx
leaq -0x190(%rbp), %rcx
movl $0x1, %r8d
callq 0x2c670
jmp 0x2a9fa
leaq -0x190(%rbp), %rdi
callq 0x6230
movl $0x0, -0x194(%rbp)
cmpl $0x12, -0x194(%rbp)
jge 0x2b064
movl $0x0, -0x198(%rbp)
cmpl $0xb, -0x198(%rbp)
jge 0x2b04e
movq -0x20(%rbp), %rdi
addq $0x18, %rdi
movslq -0x194(%rbp), %rsi
callq 0xc200
movq %rax, %rdi
movslq -0x198(%rbp), %rsi
callq 0xc220
movq -0x238(%rbp), %rdi
movb (%rax), %al
movb %al, -0x199(%rbp)
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
xorl %r9d, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2aaa5
movsbl -0x199(%rbp), %eax
cmpl $0x49, %eax
jne 0x2ab3d
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2aafe
jmp 0x2aff2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x6230
jmp 0x2b80b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x6230
jmp 0x2b80b
movsbl -0x199(%rbp), %eax
cmpl $0x4a, %eax
jne 0x2ab97
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2ab92
jmp 0x2aff0
movsbl -0x199(%rbp), %eax
cmpl $0x4c, %eax
jne 0x2abf1
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2abec
jmp 0x2afee
movsbl -0x199(%rbp), %eax
cmpl $0x4f, %eax
jne 0x2ac4b
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2ac46
jmp 0x2afec
movsbl -0x199(%rbp), %eax
cmpl $0x53, %eax
jne 0x2aca5
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2aca0
jmp 0x2afea
movsbl -0x199(%rbp), %eax
cmpl $0x5a, %eax
jne 0x2acff
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2acfa
jmp 0x2afe8
movsbl -0x199(%rbp), %eax
cmpl $0x54, %eax
jne 0x2ad59
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2ad54
jmp 0x2afe6
movsbl -0x199(%rbp), %eax
cmpl $0x2a, %eax
jne 0x2ae9f
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2adb2
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x2c0(%rbp)
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x126(,%rax,4), %eax
movl %eax, -0x2b8(%rbp)
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x73(,%rax,4), %eax
movl %eax, -0x2b4(%rbp)
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x6640
movq -0x2b0(%rbp), %rdx
leaq 0x2ca1(%rip), %rsi      # 0x2daba
leaq -0x1c0(%rbp), %rdi
callq 0x7180
jmp 0x2ae27
movl -0x2b4(%rbp), %edx
movl -0x2b8(%rbp), %esi
movq -0x2c0(%rbp), %rdi
leaq -0x1c0(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2c480
jmp 0x2ae4b
leaq -0x1c0(%rbp), %rdi
callq 0x6230
leaq -0x1c1(%rbp), %rdi
callq 0x63c0
jmp 0x2afe4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2ae8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x6230
leaq -0x1c1(%rbp), %rdi
callq 0x63c0
jmp 0x2b80b
movsbl -0x199(%rbp), %eax
cmpl $0x3f, %eax
jne 0x2afe2
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %edx
movl $0x14, %r8d
movl $0x1, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2aef8
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x2d8(%rbp)
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x126(,%rax,4), %eax
movl %eax, -0x2d0(%rbp)
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x73(,%rax,4), %eax
movl %eax, -0x2cc(%rbp)
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x6640
movq -0x2c8(%rbp), %rdx
leaq 0x22e0(%rip), %rsi      # 0x2d23f
leaq -0x1e8(%rbp), %rdi
callq 0x7180
jmp 0x2af6d
movl -0x2cc(%rbp), %edx
movl -0x2d0(%rbp), %esi
movq -0x2d8(%rbp), %rdi
leaq -0x1e8(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2c480
jmp 0x2af91
leaq -0x1e8(%rbp), %rdi
callq 0x6230
leaq -0x1e9(%rbp), %rdi
callq 0x63c0
jmp 0x2afe2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2afd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x6230
leaq -0x1e9(%rbp), %rdi
callq 0x63c0
jmp 0x2b80b
jmp 0x2afe4
jmp 0x2afe6
jmp 0x2afe8
jmp 0x2afea
jmp 0x2afec
jmp 0x2afee
jmp 0x2aff0
jmp 0x2aff2
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x198(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x128(,%rax,4), %esi
movl -0x194(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x65(,%rax,4), %edx
movl $0x7, %r8d
xorl %r9d, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b038
jmp 0x2b03a
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x2aa27
jmp 0x2b050
movl -0x194(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x194(%rbp)
jmp 0x2aa10
movq -0x238(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x2e8(%rbp)
leaq -0x211(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x6640
movq -0x2e0(%rbp), %rdx
leaq 0x2875(%rip), %rsi      # 0x2d90c
leaq -0x210(%rbp), %rdi
callq 0x7180
jmp 0x2b0a5
movq -0x2e8(%rbp), %rdi
movl $0x11d, %esi            # imm = 0x11D
movl $0x1f4, %edx            # imm = 0x1F4
leaq -0x210(%rbp), %rcx
movl $0x1, %r8d
callq 0x2c670
jmp 0x2b0ca
leaq -0x210(%rbp), %rdi
callq 0x6230
leaq -0x211(%rbp), %rdi
callq 0x63c0
movq -0x20(%rbp), %rax
movl 0x30(%rax), %eax
movl %eax, -0x218(%rbp)
movl $0x0, -0x21c(%rbp)
cmpl $0x2, -0x21c(%rbp)
jge 0x2b1c8
movl $0x0, -0x220(%rbp)
cmpl $0x4, -0x220(%rbp)
jge 0x2b1b2
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x220(%rbp), %esi
movl %esi, %eax
addl %eax, %eax
shll $0x5, %esi
subl %eax, %esi
addl $0x14f, %esi            # imm = 0x14F
movl -0x21c(%rbp), %edx
movl %edx, %eax
addl %eax, %eax
shll $0x5, %edx
subl %eax, %edx
addl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x8, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b168
jmp 0x2b16a
movl -0x220(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x220(%rbp)
jmp 0x2b110
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2b1a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x6230
leaq -0x211(%rbp), %rdi
callq 0x63c0
jmp 0x2b80b
jmp 0x2b1b4
movl -0x21c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x21c(%rbp)
jmp 0x2b0f9
movl -0x218(%rbp), %eax
movq %rax, -0x2f0(%rbp)
subq $0x8, %rax
ja 0x2b6ce
movq -0x2f0(%rbp), %rax
leaq 0x2757(%rip), %rcx      # 0x2d944
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b221
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b24c
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x18b, %esi            # imm = 0x18B
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b277
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x1a9, %esi            # imm = 0x1A9
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x9, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b2a2
jmp 0x2b6ce
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b2d2
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b2fd
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b328
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x18b, %esi            # imm = 0x18B
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x2, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b353
jmp 0x2b6ce
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x18b, %esi            # imm = 0x18B
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b383
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x18b, %esi            # imm = 0x18B
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b3ae
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b3d9
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x5, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b404
jmp 0x2b6ce
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b434
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b45f
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b48a
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0xa, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b4b5
jmp 0x2b6ce
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b4e5
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b510
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b53b
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x18b, %esi            # imm = 0x18B
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x7, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b566
jmp 0x2b6ce
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b596
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b5c1
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b5ec
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x18b, %esi            # imm = 0x18B
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x4, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b617
jmp 0x2b6ce
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x14f, %esi            # imm = 0x14F
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b647
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b672
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x18b, %esi            # imm = 0x18B
movl $0x1fe, %edx            # imm = 0x1FE
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b69d
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl $0x16d, %esi            # imm = 0x16D
movl $0x21c, %edx            # imm = 0x21C
movl $0x1e, %r8d
movl $0x3, %r9d
movl %r8d, %ecx
callq 0x2c030
jmp 0x2b6c8
jmp 0x2b6ce
jmp 0x2b6ce
jmp 0x2b6ce
movl $0x0, -0x224(%rbp)
cmpl $0x13, -0x224(%rbp)
jge 0x2b75f
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x224(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x64(,%rax,4), %r8d
movl $0x11d, %esi            # imm = 0x11D
movl $0x1f9, %ecx            # imm = 0x1F9
movl %r8d, %edx
callq 0x2c290
jmp 0x2b715
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x224(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x63(,%rax,4), %r8d
movl $0x11d, %esi            # imm = 0x11D
movl $0x1f9, %ecx            # imm = 0x1F9
movl %r8d, %edx
callq 0x2c290
jmp 0x2b749
jmp 0x2b74b
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0x2b6d8
movl $0x0, -0x228(%rbp)
cmpl $0xc, -0x228(%rbp)
jge 0x2b7ee
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x228(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11d(,%rax,4), %ecx
movl $0x64, %edx
movl $0x1cc, %r8d            # imm = 0x1CC
movl %ecx, %esi
callq 0x2c290
jmp 0x2b7a5
movq -0x238(%rbp), %rdi
addq $0x10, %rdi
movl -0x228(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %ecx
movl %ecx, %eax
leal 0x11c(,%rax,4), %ecx
movl $0x64, %edx
movl $0x1cc, %r8d            # imm = 0x1CC
movl %ecx, %esi
callq 0x2c290
jmp 0x2b7d8
jmp 0x2b7da
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0x2b769
jmp 0x2b7f0
leaq -0x68(%rbp), %rdi
callq 0x6230
leaq -0x48(%rbp), %rdi
callq 0x6230
addq $0x2f0, %rsp            # imm = 0x2F0
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0x6230
leaq -0x48(%rbp), %rdi
callq 0x6230
movq -0x70(%rbp), %rdi
callq 0x6630
nopw %cs:(%rax,%rax)