// File: kodejuice[P]chip8-emulator/./debug/disassembler.cc
// Function: decode[abi:cxx11](int, unsigned char, unsigned char)
string decode(int i, byte msb, byte lsb) {
	char ln[20];
	sprintf(ln, "%04x:  %02x %02x  =>  ", i, msb, lsb);
	string str = ln;

	byte nib = msb >> 4;

	switch (nib)
	{
		case 0x0: 
			switch (lsb)
			{
				case 0xe0: {sprintf(ln,"%s","clear"), str+=ln;} break;
				case 0xee: {sprintf(ln,"%s","ret"), str+=ln;} break;
				default: {sprintf(ln,"unknown"), str+=ln;} break;
			}
			break;
		case 0x1: {sprintf(ln,"%s 0x%03x", "jmp", ADDR), str+=ln;} break;
		case 0x2: {sprintf(ln,"%s 0x%02x", "call", ADDR), str+=ln;} break;
		case 0x3: {sprintf(ln,"%s V%01X, 0x%02x", "jeq", msb&0xf, lsb), str+=ln;} break;
		case 0x4: {sprintf(ln,"%s V%01X, 0x%02x", "jneq", msb&0xf, lsb), str+=ln;} break;
		case 0x5: {sprintf(ln,"%s V%01X, V%01X", "jeqr", msb&0xf, lsb>>4), str+=ln;} break;
		case 0x6: {sprintf(ln,"%s V%01X, 0x%02x", "mov", msb&0xf, lsb), str+=ln;} break;
		case 0x7: {sprintf(ln,"%s V%01X, 0x%02x", "add", msb&0xf, lsb), str+=ln;} break;
		case 0x8:
			{
				byte lastnib = lsb&0xf;
				switch(lastnib)
				{
					case 0: {sprintf(ln,"%s V%01X, V%01X", "mov", msb&0xf, lsb>>4), str+=ln;} break;
					case 1: {sprintf(ln,"%s V%01X, V%01X", "or", msb&0xf, lsb>>4), str+=ln;} break;
					case 2: {sprintf(ln,"%s V%01X, V%01X", "and", msb&0xf, lsb>>4), str+=ln;} break;
					case 3: {sprintf(ln,"%s V%01X, V%01X", "xor", msb&0xf, lsb>>4), str+=ln;} break;
					case 4: {sprintf(ln,"%s V%01X, V%01X", "addr", msb&0xf, lsb>>4), str+=ln;} break;
					case 5: {sprintf(ln,"%s V%01X, V%01X", "sub", msb&0xf, lsb>>4), str+=ln;} break;
					case 6: {sprintf(ln,"%s V%01X, V%01X", "shr", msb&0xf, lsb>>4), str+=ln;} break;
					case 7: {sprintf(ln,"%s V%01X, V%01X", "subb", msb&0xf, lsb>>4), str+=ln;} break;
					case 0xe: {sprintf(ln,"%s V%01X, V%01X", "shl", msb&0xf, lsb>>4), str+=ln;} break;
					default: {sprintf(ln,"unknown"), str+=ln;} break;
				}
			}
			break;
		case 0x9: {sprintf(ln,"%s V%01X, V%01X", "jneqr", msb&0xf, lsb>>4), str+=ln;} break;
		case 0xa: {sprintf(ln,"%s I, [0x%03x]", "mov", ADDR), str+=ln;} break;
		case 0xb: {sprintf(ln,"%s 0x%03x+(V0)", "jmp", ADDR), str+=ln;} break;
		case 0xc: {sprintf(ln,"%s V%01X, 0x%02X", "rand", msb&0xf, lsb), str+=ln;} break;
		case 0xd: {sprintf(ln,"%s V%01X, V%01X, 0x%01x", "draw", msb&0xf, lsb>>4, lsb&0xf), str+=ln;} break;
		case 0xe: 
			switch(lsb)
			{
				case 0x9E: {sprintf(ln,"%s V%01X", "jkey", msb&0xf), str+=ln;} break;
				case 0xA1: {sprintf(ln,"%s V%01X", "jnkey", msb&0xf), str+=ln;} break;
				default: {sprintf(ln,"unknown"), str+=ln;} break;
			}
			break;
		case 0xf: 
			switch(lsb)
			{
				case 0x07: {sprintf(ln,"%s V%01X", "getdelay", msb&0xf), str+=ln;} break;
				case 0x0a: {sprintf(ln,"%s V%01X", "waitkey", msb&0xf), str+=ln;} break;
				case 0x15: {sprintf(ln,"%s V%01X", "setdelay", msb&0xf), str+=ln;} break;
				case 0x18: {sprintf(ln,"%s V%01X", "setsound", msb&0xf), str+=ln;} break;
				case 0x1e: {sprintf(ln,"%s I, V%01X", "mov", msb&0xf), str+=ln;} break;
				case 0x29: {sprintf(ln,"%s I, V%01X", "spritei", msb&0xf), str+=ln;} break;
				case 0x33: {sprintf(ln,"%s [I], V%01X", "bcd", msb&0xf), str+=ln;} break;
				case 0x55: {sprintf(ln,"%s [I], V0-V%01X", "mov", msb&0xf), str+=ln;} break;
				case 0x65: {sprintf(ln,"%s V0-V%01X, [I]", "mov", msb&0xf), str+=ln;} break;
				default: {sprintf(ln,"unknown"), str+=ln;} break;
			}
			break;
	}

	return str;
}

// Assembly:
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, 0x160(%rsp)
movb %cl, %al
movb %dl, %cl
movq %rdi, %rdx
movq %rdx, 0x158(%rsp)
movq %rdi, 0x1b0(%rsp)
movl %esi, 0x1ac(%rsp)
movb %cl, 0x1ab(%rsp)
movb %al, 0x1aa(%rsp)
movl 0x1ac(%rsp), %edx
movzbl 0x1ab(%rsp), %ecx
movzbl 0x1aa(%rsp), %r8d
leaq 0x69be(%rip), %rsi      # 0xa218
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x168(%rsp)
callq 0x20c0
movb $0x0, 0x18f(%rsp)
leaq 0x18e(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x2420
movq 0x160(%rsp), %rdi
movq 0x168(%rsp), %rsi
movq 0x170(%rsp), %rdx
callq 0x2380
jmp 0x38ad
leaq 0x18e(%rsp), %rdi
callq 0x22f0
movzbl 0x1ab(%rsp), %eax
shrl $0x4, %eax
movb %al, 0x17b(%rsp)
movzbl 0x17b(%rsp), %eax
movq %rax, 0x150(%rsp)
subq $0xf, %rax
ja 0x45f5
movq 0x150(%rsp), %rax
leaq 0x678b(%rip), %rcx      # 0xa080
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0x18e(%rsp), %rdi
callq 0x22f0
jmp 0x4624
movzbl 0x1aa(%rsp), %eax
movl %eax, 0x14c(%rsp)
subl $0xe0, %eax
je 0x394f
jmp 0x393c
movl 0x14c(%rsp), %eax
subl $0xee, %eax
je 0x39b6
jmp 0x39f4
leaq 0x68d9(%rip), %rsi      # 0xa22f
leaq 0x68d5(%rip), %rdx      # 0xa232
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x140(%rsp), %rsi
callq 0x2290
jmp 0x398b
jmp 0x3a2b
movq 0x160(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
callq 0x21e0
jmp 0x4624
leaq 0x6872(%rip), %rsi      # 0xa22f
leaq 0x6874(%rip), %rdx      # 0xa238
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x138(%rsp), %rsi
callq 0x2290
jmp 0x39f2
jmp 0x3a2b
leaq 0x6841(%rip), %rsi      # 0xa23c
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x130(%rsp), %rsi
callq 0x2290
jmp 0x3a29
jmp 0x3a2b
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
shll $0x8, %ecx
movzbl 0x1aa(%rsp), %eax
orl %eax, %ecx
leaq 0x67f5(%rip), %rsi      # 0xa244
leaq 0x67f8(%rip), %rdx      # 0xa24e
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x128(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x128(%rsp), %rsi
callq 0x2290
jmp 0x3a84
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
shll $0x8, %ecx
movzbl 0x1aa(%rsp), %eax
orl %eax, %ecx
leaq 0x67aa(%rip), %rsi      # 0xa252
leaq 0x67ad(%rip), %rdx      # 0xa25c
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x120(%rsp), %rsi
callq 0x2290
jmp 0x3add
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
leaq 0x6764(%rip), %rsi      # 0xa261
leaq 0x676e(%rip), %rdx      # 0xa272
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x118(%rsp), %rsi
callq 0x2290
jmp 0x3b32
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
leaq 0x670f(%rip), %rsi      # 0xa261
leaq 0x671d(%rip), %rdx      # 0xa276
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x110(%rsp), %rsi
callq 0x2290
jmp 0x3b87
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x66d0(%rip), %rsi      # 0xa27b
leaq 0x66d9(%rip), %rdx      # 0xa28b
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x108(%rsp), %rsi
callq 0x2290
jmp 0x3be0
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
leaq 0x6661(%rip), %rsi      # 0xa261
leaq 0x6689(%rip), %rdx      # 0xa290
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x100(%rsp), %rsi
callq 0x2290
jmp 0x3c35
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
leaq 0x660c(%rip), %rsi      # 0xa261
leaq 0x6638(%rip), %rdx      # 0xa294
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xf8(%rsp), %rsi
callq 0x2290
jmp 0x3c8a
jmp 0x45f5
movb 0x1aa(%rsp), %al
andb $0xf, %al
movb %al, 0x17a(%rsp)
movzbl 0x17a(%rsp), %eax
movq %rax, 0xf0(%rsp)
subq $0xe, %rax
ja 0x3fef
movq 0xf0(%rsp), %rax
leaq 0x63f8(%rip), %rcx      # 0xa0c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x658b(%rip), %rsi      # 0xa27b
leaq 0x6599(%rip), %rdx      # 0xa290
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xe8(%rsp), %rsi
callq 0x2290
jmp 0x3d25
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x6532(%rip), %rsi      # 0xa27b
leaq 0x6549(%rip), %rdx      # 0xa299
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xe0(%rsp), %rsi
callq 0x2290
jmp 0x3d7e
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x64d9(%rip), %rsi      # 0xa27b
leaq 0x653f(%rip), %rdx      # 0xa2e8
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x2290
jmp 0x3dd7
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x6480(%rip), %rsi      # 0xa27b
leaq 0x6496(%rip), %rdx      # 0xa298
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0x2290
jmp 0x3e30
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x6427(%rip), %rsi      # 0xa27b
leaq 0x6441(%rip), %rdx      # 0xa29c
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xc8(%rsp), %rsi
callq 0x2290
jmp 0x3e89
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x63ce(%rip), %rsi      # 0xa27b
leaq 0x63ed(%rip), %rdx      # 0xa2a1
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xc0(%rsp), %rsi
callq 0x2290
jmp 0x3ee2
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x6375(%rip), %rsi      # 0xa27b
leaq 0x6398(%rip), %rdx      # 0xa2a5
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xb8(%rsp), %rsi
callq 0x2290
jmp 0x3f3b
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x631c(%rip), %rsi      # 0xa27b
leaq 0x6343(%rip), %rdx      # 0xa2a9
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xb0(%rsp), %rsi
callq 0x2290
jmp 0x3f94
jmp 0x4026
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x62c3(%rip), %rsi      # 0xa27b
leaq 0x62ef(%rip), %rdx      # 0xa2ae
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xa8(%rsp), %rsi
callq 0x2290
jmp 0x3fed
jmp 0x4026
leaq 0x6246(%rip), %rsi      # 0xa23c
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0xa0(%rsp), %rsi
callq 0x2290
jmp 0x4024
jmp 0x4026
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
shrl $0x4, %r8d
leaq 0x6231(%rip), %rsi      # 0xa27b
leaq 0x6261(%rip), %rdx      # 0xa2b2
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0x2290
jmp 0x407f
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
shll $0x8, %ecx
movzbl 0x1aa(%rsp), %eax
orl %eax, %ecx
leaq 0x6215(%rip), %rsi      # 0xa2b8
leaq 0x61e6(%rip), %rdx      # 0xa290
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0x2290
jmp 0x40d8
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
shll $0x8, %ecx
movzbl 0x1aa(%rsp), %eax
orl %eax, %ecx
leaq 0x61cb(%rip), %rsi      # 0xa2c7
leaq 0x614b(%rip), %rdx      # 0xa24e
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0x2290
jmp 0x4131
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r8d
leaq 0x6185(%rip), %rsi      # 0xa2d6
leaq 0x618f(%rip), %rdx      # 0xa2e7
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x2290
jmp 0x4186
jmp 0x45f5
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
movzbl 0x1aa(%rsp), %r9d
movl %r9d, %r8d
shrl $0x4, %r8d
andl $0xf, %r9d
leaq 0x613b(%rip), %rsi      # 0xa2ec
leaq 0x614c(%rip), %rdx      # 0xa304
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0x2290
jmp 0x41e0
jmp 0x45f5
movzbl 0x1aa(%rsp), %eax
movl %eax, 0x74(%rsp)
subl $0x9e, %eax
je 0x420a
jmp 0x41fa
movl 0x74(%rsp), %eax
subl $0xa1, %eax
je 0x424d
jmp 0x4290
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x60ed(%rip), %rsi      # 0xa309
leaq 0x60ef(%rip), %rdx      # 0xa312
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x2290
jmp 0x424b
jmp 0x42c1
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x60aa(%rip), %rsi      # 0xa309
leaq 0x60b1(%rip), %rdx      # 0xa317
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x2290
jmp 0x428e
jmp 0x42c1
leaq 0x5fa5(%rip), %rsi      # 0xa23c
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0x2290
jmp 0x42bf
jmp 0x42c1
jmp 0x45f5
movzbl 0x1aa(%rsp), %eax
movl %eax, 0x54(%rsp)
subl $0x7, %eax
je 0x4354
jmp 0x42d9
movl 0x54(%rsp), %eax
subl $0xa, %eax
je 0x439a
jmp 0x42e8
movl 0x54(%rsp), %eax
subl $0x15, %eax
je 0x43e0
jmp 0x42f7
movl 0x54(%rsp), %eax
subl $0x18, %eax
je 0x4426
jmp 0x4306
movl 0x54(%rsp), %eax
subl $0x1e, %eax
je 0x446c
jmp 0x4315
movl 0x54(%rsp), %eax
subl $0x29, %eax
je 0x44b2
jmp 0x4324
movl 0x54(%rsp), %eax
subl $0x33, %eax
je 0x44f8
jmp 0x4333
movl 0x54(%rsp), %eax
subl $0x55, %eax
je 0x453e
jmp 0x4342
movl 0x54(%rsp), %eax
subl $0x65, %eax
je 0x4581
jmp 0x45c4
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5fa3(%rip), %rsi      # 0xa309
leaq 0x5fb0(%rip), %rdx      # 0xa31d
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x2290
jmp 0x4395
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5f5d(%rip), %rsi      # 0xa309
leaq 0x5f73(%rip), %rdx      # 0xa326
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x2290
jmp 0x43db
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5f17(%rip), %rsi      # 0xa309
leaq 0x5f35(%rip), %rdx      # 0xa32e
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x2290
jmp 0x4421
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5ed1(%rip), %rsi      # 0xa309
leaq 0x5ef8(%rip), %rdx      # 0xa337
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x2290
jmp 0x4467
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5ec2(%rip), %rsi      # 0xa340
leaq 0x5e0b(%rip), %rdx      # 0xa290
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x2290
jmp 0x44ad
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5e7c(%rip), %rsi      # 0xa340
leaq 0x5e81(%rip), %rdx      # 0xa34c
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x2290
jmp 0x44f3
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5e4a(%rip), %rsi      # 0xa354
leaq 0x5e51(%rip), %rdx      # 0xa362
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x2290
jmp 0x4539
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5e16(%rip), %rsi      # 0xa366
leaq 0x5d39(%rip), %rdx      # 0xa290
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x2290
jmp 0x457f
jmp 0x45f3
movzbl 0x1ab(%rsp), %ecx
andl $0xf, %ecx
leaq 0x5de4(%rip), %rsi      # 0xa377
leaq 0x5cf6(%rip), %rdx      # 0xa290
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x2290
jmp 0x45c2
jmp 0x45f3
leaq 0x5c71(%rip), %rsi      # 0xa23c
xorl %eax, %eax
leaq 0x190(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x20c0
movq 0x160(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2290
jmp 0x45f1
jmp 0x45f3
jmp 0x45f5
movb $0x1, 0x18f(%rsp)
testb $0x1, 0x18f(%rsp)
jne 0x4614
movq 0x160(%rsp), %rdi
callq 0x21e0
movq 0x158(%rsp), %rax
addq $0x1b8, %rsp            # imm = 0x1B8
retq
movq 0x180(%rsp), %rdi
callq 0x2410
nopw %cs:(%rax,%rax)