// File: /workspace/github_cpp_makefile_star2_O3/mdpkh[P]retro6k/src/main.cpp
// Function: SetHWPalette(SDL_Palette*)
int SetHWPalette(SDL_Palette* dstpal)
{
	SDL_Color d[256];
	for (int j = 0; j < 256; ++j)
	{
		d[j].a = 255;
		int i = ((j & 0x8) >> 2 | (j & 0x80) >> 7) * 0x11;
		d[j].r = ((j & 0x4) >> 1 | (j & 0x40) >> 6) * 0x44 | i;
		d[j].g = ((j & 0x2) | (j & 0x20) >> 5) * 0x44 | i;
		d[j].b = ((j & 0x1) << 1 | (j & 0x10) >> 4) * 0x44 | i;
	}
	return SDL_SetPaletteColors(dstpal, d, 0, 256);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x568, %rsp            # imm = 0x568
movq %rdi, 0x118(%rsp)
movdqa 0xbcd1(%rip), %xmm1     # 0x13010
movdqa 0xbcd9(%rip), %xmm2     # 0x13020
movdqa 0xbce0(%rip), %xmm13    # 0x13030
movdqa 0xbce7(%rip), %xmm8     # 0x13040
movl $0x3f, %eax
movdqa %xmm8, 0x150(%rsp)
movdqa %xmm13, 0x140(%rsp)
movdqa %xmm2, 0x130(%rsp)
movdqa %xmm1, 0x120(%rsp)
movdqa 0xbcc3(%rip), %xmm11    # 0x13050
movdqa 0xbccb(%rip), %xmm5     # 0x13060
movdqa 0xbcd3(%rip), %xmm7     # 0x13070
movdqa %xmm2, 0x10(%rsp)
movdqa %xmm1, 0x20(%rsp)
movb $-0x1, %cl
movb %cl, 0x124(%rsp,%rax)
movb %cl, 0x128(%rsp,%rax)
movb %cl, 0x12c(%rsp,%rax)
movb %cl, 0x130(%rsp,%rax)
movb %cl, 0x134(%rsp,%rax)
movb %cl, 0x138(%rsp,%rax)
movb %cl, 0x13c(%rsp,%rax)
movb %cl, 0x140(%rsp,%rax)
movb %cl, 0x144(%rsp,%rax)
movb %cl, 0x148(%rsp,%rax)
movb %cl, 0x14c(%rsp,%rax)
movb %cl, 0x150(%rsp,%rax)
movb %cl, 0x154(%rsp,%rax)
movb %cl, 0x158(%rsp,%rax)
movb %cl, 0x15c(%rsp,%rax)
movb %cl, 0x160(%rsp,%rax)
movdqa %xmm8, %xmm0
psrld $0x2, %xmm0
movdqa %xmm13, %xmm1
psrld $0x2, %xmm1
movdqa 0x10(%rsp), %xmm2
psrld $0x2, %xmm2
movdqa 0x20(%rsp), %xmm3
psrld $0x2, %xmm3
pand %xmm11, %xmm3
pand %xmm11, %xmm2
pand %xmm11, %xmm1
pand %xmm11, %xmm0
movdqa 0x20(%rsp), %xmm6
psrld $0x7, %xmm6
por %xmm3, %xmm6
movdqa 0x10(%rsp), %xmm3
psrld $0x7, %xmm3
por %xmm2, %xmm3
movdqa %xmm13, %xmm2
psrld $0x7, %xmm2
por %xmm1, %xmm2
movdqa %xmm8, %xmm1
psrld $0x7, %xmm1
por %xmm0, %xmm1
movdqa %xmm6, %xmm0
pslld $0x4, %xmm0
paddd %xmm6, %xmm0
movdqa %xmm0, %xmm4
movdqa %xmm3, %xmm0
pslld $0x4, %xmm0
paddd %xmm3, %xmm0
movdqa %xmm0, %xmm9
movdqa %xmm2, %xmm14
pslld $0x4, %xmm14
paddd %xmm2, %xmm14
movdqa %xmm1, %xmm15
pslld $0x4, %xmm15
paddd %xmm1, %xmm15
movdqa %xmm8, %xmm0
psrld $0x1, %xmm0
movdqa %xmm13, %xmm2
psrld $0x1, %xmm2
movdqa 0x10(%rsp), %xmm6
psrld $0x1, %xmm6
movdqa 0x20(%rsp), %xmm3
psrld $0x1, %xmm3
pand %xmm11, %xmm3
pand %xmm11, %xmm6
pand %xmm11, %xmm2
pand %xmm11, %xmm0
movdqa 0x20(%rsp), %xmm1
psrld $0x6, %xmm1
pand %xmm5, %xmm1
por %xmm3, %xmm1
movdqa 0x10(%rsp), %xmm3
psrld $0x6, %xmm3
pand %xmm5, %xmm3
por %xmm6, %xmm3
movdqa %xmm13, %xmm6
psrld $0x6, %xmm6
pand %xmm5, %xmm6
por %xmm2, %xmm6
movdqa %xmm8, %xmm2
psrld $0x6, %xmm2
pand %xmm5, %xmm2
por %xmm0, %xmm2
pmaddwd %xmm7, %xmm1
pmaddwd %xmm7, %xmm3
pmaddwd %xmm7, %xmm6
pmaddwd %xmm7, %xmm2
por %xmm15, %xmm2
por %xmm14, %xmm6
por %xmm9, %xmm3
movdqa %xmm9, 0x30(%rsp)
por %xmm4, %xmm1
movdqa %xmm4, 0x40(%rsp)
movdqa %xmm1, 0xe0(%rsp)
movdqa %xmm3, 0xb0(%rsp)
movdqa %xmm6, 0x80(%rsp)
movdqa %xmm2, 0x60(%rsp)
movb 0xec(%rsp), %cl
movb %cl, 0xf(%rsp)
movb 0xe8(%rsp), %cl
movb %cl, 0xe(%rsp)
movb 0xe0(%rsp), %r8b
movb 0xe4(%rsp), %r9b
movb 0xbc(%rsp), %r10b
movb 0xb8(%rsp), %r11b
movb 0xb0(%rsp), %bl
movb 0xb4(%rsp), %bpl
movb 0x8c(%rsp), %r14b
movb 0x88(%rsp), %r15b
movb 0x80(%rsp), %r12b
movb 0x84(%rsp), %r13b
movb 0x6c(%rsp), %sil
movb 0x68(%rsp), %dil
movb 0x60(%rsp), %cl
movb 0x64(%rsp), %dl
movb %cl, 0x121(%rsp,%rax)
movb %dl, 0x125(%rsp,%rax)
movb %dil, 0x129(%rsp,%rax)
movb %sil, 0x12d(%rsp,%rax)
movb %r12b, 0x131(%rsp,%rax)
movb %r13b, 0x135(%rsp,%rax)
movb %r15b, 0x139(%rsp,%rax)
movb %r14b, 0x13d(%rsp,%rax)
movb %bl, 0x141(%rsp,%rax)
movb %bpl, 0x145(%rsp,%rax)
movb %r11b, 0x149(%rsp,%rax)
movb %r10b, 0x14d(%rsp,%rax)
movb %r8b, 0x151(%rsp,%rax)
movb %r9b, 0x155(%rsp,%rax)
movb 0xe(%rsp), %cl
movb %cl, 0x159(%rsp,%rax)
movb 0xf(%rsp), %cl
movb %cl, 0x15d(%rsp,%rax)
movdqa 0x20(%rsp), %xmm1
pand %xmm11, %xmm1
movdqa 0x10(%rsp), %xmm2
pand %xmm11, %xmm2
movdqa %xmm13, %xmm3
pand %xmm11, %xmm3
movdqa %xmm8, %xmm6
pand %xmm11, %xmm6
movdqa 0x20(%rsp), %xmm0
psrld $0x5, %xmm0
pand %xmm5, %xmm0
por %xmm1, %xmm0
movdqa 0x10(%rsp), %xmm1
psrld $0x5, %xmm1
pand %xmm5, %xmm1
por %xmm2, %xmm1
movdqa %xmm13, %xmm2
psrld $0x5, %xmm2
pand %xmm5, %xmm2
por %xmm3, %xmm2
movdqa %xmm8, %xmm3
psrld $0x5, %xmm3
pand %xmm5, %xmm3
por %xmm6, %xmm3
pmaddwd %xmm7, %xmm0
pmaddwd %xmm7, %xmm1
pmaddwd %xmm7, %xmm2
pmaddwd %xmm7, %xmm3
por %xmm15, %xmm3
por %xmm14, %xmm2
por %xmm9, %xmm1
por %xmm4, %xmm0
movdqa %xmm0, 0xf0(%rsp)
movdqa %xmm1, 0xc0(%rsp)
movdqa %xmm2, 0x90(%rsp)
movdqa %xmm3, 0x50(%rsp)
movdqa 0x150(%rsp), %xmm4
movdqa %xmm4, %xmm6
paddd %xmm4, %xmm6
movdqa 0x140(%rsp), %xmm12
movdqa %xmm12, %xmm3
paddd %xmm12, %xmm3
movdqa 0x130(%rsp), %xmm10
movdqa %xmm10, %xmm2
paddd %xmm10, %xmm2
movdqa 0x120(%rsp), %xmm9
movdqa %xmm9, %xmm1
paddd %xmm9, %xmm1
pand %xmm11, %xmm1
pand %xmm11, %xmm2
pand %xmm11, %xmm3
pand %xmm11, %xmm6
movdqa 0x20(%rsp), %xmm0
psrld $0x4, %xmm0
pand %xmm5, %xmm0
por %xmm1, %xmm0
movdqa 0x10(%rsp), %xmm1
psrld $0x4, %xmm1
pand %xmm5, %xmm1
por %xmm2, %xmm1
movdqa %xmm13, %xmm2
psrld $0x4, %xmm2
pand %xmm5, %xmm2
por %xmm3, %xmm2
movdqa %xmm8, %xmm3
psrld $0x4, %xmm3
pand %xmm5, %xmm3
por %xmm6, %xmm3
pmaddwd %xmm7, %xmm3
por %xmm15, %xmm3
pmaddwd %xmm7, %xmm2
por %xmm14, %xmm2
pmaddwd %xmm7, %xmm1
por 0x30(%rsp), %xmm1
pmaddwd %xmm7, %xmm0
por 0x40(%rsp), %xmm0
movb 0xfc(%rsp), %cl
movb %cl, 0x40(%rsp)
movb 0xf8(%rsp), %cl
movb %cl, 0x30(%rsp)
movb 0xf0(%rsp), %sil
movb 0xf4(%rsp), %dil
movb 0xcc(%rsp), %r8b
movb 0xc8(%rsp), %r9b
movb 0xc0(%rsp), %r10b
movb 0xc4(%rsp), %r11b
movb 0x9c(%rsp), %bl
movb 0x98(%rsp), %bpl
movb 0x90(%rsp), %r14b
movb 0x94(%rsp), %r15b
movb 0x5c(%rsp), %r12b
movb 0x58(%rsp), %r13b
movb 0x50(%rsp), %cl
movb 0x54(%rsp), %dl
movb %cl, 0x122(%rsp,%rax)
movb %dl, 0x126(%rsp,%rax)
movb %r13b, 0x12a(%rsp,%rax)
movb %r12b, 0x12e(%rsp,%rax)
movb %r14b, 0x132(%rsp,%rax)
movb %r15b, 0x136(%rsp,%rax)
movb %bpl, 0x13a(%rsp,%rax)
movb %bl, 0x13e(%rsp,%rax)
movb %r10b, 0x142(%rsp,%rax)
movb %r11b, 0x146(%rsp,%rax)
movb %r9b, 0x14a(%rsp,%rax)
movb %r8b, 0x14e(%rsp,%rax)
movb %sil, 0x152(%rsp,%rax)
movb %dil, 0x156(%rsp,%rax)
movb 0x30(%rsp), %cl
movb %cl, 0x15a(%rsp,%rax)
movb 0x40(%rsp), %cl
movb %cl, 0x15e(%rsp,%rax)
movdqa %xmm0, 0x100(%rsp)
movdqa %xmm1, 0xd0(%rsp)
movdqa %xmm2, 0xa0(%rsp)
movdqa 0x10(%rsp), %xmm2
movdqa %xmm3, 0x70(%rsp)
movdqa 0x20(%rsp), %xmm1
movb 0x10c(%rsp), %cl
movb %cl, 0x40(%rsp)
movb 0x108(%rsp), %cl
movb %cl, 0x30(%rsp)
movb 0x100(%rsp), %sil
movb 0x104(%rsp), %dil
movb 0xdc(%rsp), %r8b
movb 0xd8(%rsp), %r9b
movb 0xd0(%rsp), %r10b
movb 0xd4(%rsp), %r11b
movb 0xac(%rsp), %bl
movb 0xa8(%rsp), %bpl
movb 0xa0(%rsp), %r14b
movb 0xa4(%rsp), %r15b
movb 0x7c(%rsp), %r12b
movb 0x78(%rsp), %r13b
movb 0x70(%rsp), %cl
movb 0x74(%rsp), %dl
movb %cl, 0x123(%rsp,%rax)
movb %dl, 0x127(%rsp,%rax)
movb %r13b, 0x12b(%rsp,%rax)
movb %r12b, 0x12f(%rsp,%rax)
movb %r14b, 0x133(%rsp,%rax)
movb %r15b, 0x137(%rsp,%rax)
movb %bpl, 0x13b(%rsp,%rax)
movb %bl, 0x13f(%rsp,%rax)
movb %r10b, 0x143(%rsp,%rax)
movb %r11b, 0x147(%rsp,%rax)
movb %r9b, 0x14b(%rsp,%rax)
movb %r8b, 0x14f(%rsp,%rax)
movb %sil, 0x153(%rsp,%rax)
movb %dil, 0x157(%rsp,%rax)
movb 0x30(%rsp), %cl
movb %cl, 0x15b(%rsp,%rax)
movb 0x40(%rsp), %cl
movb %cl, 0x15f(%rsp,%rax)
movdqa 0xb625(%rip), %xmm0     # 0x13080
paddd %xmm0, %xmm8
paddd %xmm0, %xmm13
paddd %xmm0, %xmm2
paddd %xmm0, %xmm1
paddd %xmm0, %xmm4
movdqa %xmm4, 0x150(%rsp)
paddd %xmm0, %xmm12
movdqa %xmm12, 0x140(%rsp)
paddd %xmm0, %xmm10
movdqa %xmm10, 0x130(%rsp)
paddd %xmm0, %xmm9
movdqa %xmm9, 0x120(%rsp)
addq $0x40, %rax
cmpq $0x43f, %rax            # imm = 0x43F
jne 0x739d
leaq 0x160(%rsp), %rsi
movq 0x118(%rsp), %rdi
xorl %edx, %edx
movl $0x100, %ecx            # imm = 0x100
callq 0x61c0
addq $0x568, %rsp            # imm = 0x568
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq