// File: /workspace/github_c_makefile_star2_O0/minkcv[P]vm/machine/gpu.c
// Function: drawSprites
void drawSprites(GPU* gpu, uint8_t memory[MEMORY_SEGMENT_COUNT][MEMORY_SEGMENT_SIZE])
{
    int i;
    uint8_t* pixels = gpu->pixels;
    uint8_t bgColorIndex = memory[BACK_COLOR_SEG][BACK_COLOR_OFFSET];
    uint8_t bgRed = getRed(bgColorIndex);
    uint8_t bgGreen = getGreen(bgColorIndex);
    uint8_t bgBlue = getBlue(bgColorIndex);
    for (i = 0; i < SCREEN_WIDTH * SCREEN_HEIGHT * gpu->bytesPerPixel; i+=gpu->bytesPerPixel)
    {
        *(pixels + i) = bgRed;
        *(pixels + i + 1) = bgGreen;
        *(pixels + i + 2) = bgBlue;
    }
    for (i = 0; i < NUM_SPRITES; i++)
    {
        if (gpu->sprAttrs[i].active && 
                gpu->sprAttrs[i].x + gpu->sprAttrs[i].width <= SCREEN_WIDTH &&
                gpu->sprAttrs[i].y + gpu->sprAttrs[i].height <= SCREEN_HEIGHT)
        {
            int w, h;
            int x = gpu->sprAttrs[i].x;
            int y = gpu->sprAttrs[i].y;
            int flipHor = gpu->sprAttrs[i].flipHor;
            int flipVer = gpu->sprAttrs[i].flipVer;
            int fullWidth = gpu->sprAttrs[i].fullWidth;
            int fullHeight = gpu->sprAttrs[i].fullHeight;
            int width = gpu->sprAttrs[i].width;
            int height = gpu->sprAttrs[i].height;
            if (fullWidth)
                width = SCREEN_WIDTH;
            if (fullHeight)
                height = SCREEN_HEIGHT;
            uint32_t end = gpu->sprAttrs[i].segmentAddr * MEMORY_SEGMENT_SIZE + gpu->sprAttrs[i].byteAddr;
            end += height * (width / 4);
            if (end > MEMORY_SEGMENT_COUNT * MEMORY_SEGMENT_SIZE) {
                // sprite data extends past the end of memory, skip it
                continue;
            }
            uint8_t* sprite = &memory[gpu->sprAttrs[i].segmentAddr][gpu->sprAttrs[i].byteAddr];
            for (h = 0; h < height; h++)
            {
                for (w = 0; w < width / 4; w++)
                {
                    uint8_t fourPixels = 0;
                    if (flipHor == 0 && flipVer == 0)
                        fourPixels = *(sprite + w + (h * width / 4));
                    else if (flipHor == 1 && flipVer == 0)
                    {
                        uint8_t fourReversedPixels = *(sprite + (width / 4) - w - 1 + (h * width / 4));
                        fourPixels |= (fourReversedPixels & 0xC0) >> 6;
                        fourPixels |= (fourReversedPixels & 0x30) >> 2;
                        fourPixels |= (fourReversedPixels & 0x0C) << 2;
                        fourPixels |= (fourReversedPixels & 0x3) << 6;
                    }
                    else if (flipHor == 0 && flipVer == 1)
                    {
                        fourPixels = *(sprite + w + (height * width / 4) - ((h + 1) * width / 4));
                    }
                    else if (flipHor == 1 && flipVer == 1)
                    {
                        uint8_t fourReversedPixels = *(sprite + (width / 4) - w - 1 + (height * width / 4) - ((h + 1) * width / 4));
                        fourPixels |= (fourReversedPixels & 0xC0) >> 6;
                        fourPixels |= (fourReversedPixels & 0x30) >> 2;
                        fourPixels |= (fourReversedPixels & 0x0C) << 2;
                        fourPixels |= (fourReversedPixels & 0x3) << 6;
                    }
                    // Sprite color palette indicies
                    uint8_t bits1 = (fourPixels >> 6) & 0x3; // MSB
                    uint8_t bits2 = (fourPixels >> 4) & 0x3;
                    uint8_t bits3 = (fourPixels >> 2) & 0x3;
                    uint8_t bits4 = fourPixels & 0x3;
                    // These are full color palette indicies
                    uint8_t pixel1 = gpu->sprAttrs[i].colors[bits1];
                    uint8_t pixel2 = gpu->sprAttrs[i].colors[bits2];
                    uint8_t pixel3 = gpu->sprAttrs[i].colors[bits3];
                    uint8_t pixel4 = gpu->sprAttrs[i].colors[bits4];
                    uint8_t* curPixel = pixels + (x * gpu->bytesPerPixel) + (y * gpu->pitch) + (w * gpu->bytesPerPixel * 4) + (h * gpu->pitch);
                    if (!(gpu->sprAttrs[i].color4Alpha && bits1 == 0x3))
                    {
                        *curPixel = getRed(pixel1);
                        *(curPixel + 1) = getGreen(pixel1);
                        *(curPixel + 2) = getBlue(pixel1);
                    }
                    if (!(gpu->sprAttrs[i].color4Alpha && bits2 == 0x3))
                    {
                        *(curPixel + 3) = getRed(pixel2);
                        *(curPixel + 4) = getGreen(pixel2);
                        *(curPixel + 5) = getBlue(pixel2);
                    }
                    if (!(gpu->sprAttrs[i].color4Alpha && bits3 == 0x3))
                    {
                        *(curPixel + 6) = getRed(pixel3);
                        *(curPixel + 7) = getGreen(pixel3);
                        *(curPixel + 8) = getBlue(pixel3);
                    }
                    if (!(gpu->sprAttrs[i].color4Alpha && bits4 == 0x3))
                    {
                        *(curPixel + 9) = getRed(pixel4);
                        *(curPixel + 10) = getGreen(pixel4);
                        *(curPixel + 11) = getBlue(pixel4);
                    }
                }
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0xc00(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movb 0x7f10(%rax), %al
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %edi
callq 0x2c60
movb %al, -0x22(%rbp)
movzbl -0x21(%rbp), %edi
callq 0x2c80
movb %al, -0x23(%rbp)
movzbl -0x21(%rbp), %edi
callq 0x2cb0
movb %al, -0x24(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x8(%rbp), %rcx
imull $0xc000, 0xc0c(%rcx), %ecx # imm = 0xC000
cmpl %ecx, %eax
jge 0x250d
movb -0x22(%rbp), %dl
movq -0x20(%rbp), %rax
movslq -0x14(%rbp), %rcx
movb %dl, (%rax,%rcx)
movb -0x23(%rbp), %dl
movq -0x20(%rbp), %rax
movslq -0x14(%rbp), %rcx
movb %dl, 0x1(%rax,%rcx)
movb -0x24(%rbp), %dl
movq -0x20(%rbp), %rax
movslq -0x14(%rbp), %rcx
movb %dl, 0x2(%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0xc0c(%rax), %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x24ba
movl $0x0, -0x14(%rbp)
cmpl $0x100, -0x14(%rbp)     # imm = 0x100
jge 0x2c53
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2c43
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl 0x1(%rax), %eax
movq -0x8(%rbp), %rcx
movslq -0x14(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x3(%rcx), %ecx
addl %ecx, %eax
cmpl $0x100, %eax            # imm = 0x100
jg 0x2c43
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl 0x2(%rax), %eax
movq -0x8(%rbp), %rcx
movslq -0x14(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x4(%rcx), %ecx
addl %ecx, %eax
cmpl $0xc0, %eax
jg 0x2c43
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl 0x1(%rax), %eax
movl %eax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl 0x2(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x3c(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb $0x5, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x44(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl 0x3(%rax), %eax
movl %eax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl 0x4(%rax), %eax
movl %eax, -0x4c(%rbp)
cmpl $0x0, -0x40(%rbp)
je 0x267a
movl $0x100, -0x48(%rbp)     # imm = 0x100
cmpl $0x0, -0x44(%rbp)
je 0x2687
movl $0xc0, -0x4c(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl 0x5(%rax), %eax
shll $0x8, %eax
movq -0x8(%rbp), %rcx
movslq -0x14(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x6(%rcx), %ecx
addl %ecx, %eax
movl %eax, -0x50(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x74(%rbp)
movl -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x74(%rbp), %eax
imull %ecx, %eax
addl -0x50(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x10000, -0x50(%rbp)   # imm = 0x10000
jbe 0x26e2
jmp 0x2c45
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
movslq -0x14(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x5(%rcx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x8(%rbp), %rcx
movslq -0x14(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x6(%rcx), %ecx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x2c41
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x78(%rbp)
movl -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x78(%rbp), %eax
cmpl %ecx, %eax
jge 0x2c31
movb $0x0, -0x59(%rbp)
cmpl $0x0, -0x38(%rbp)
jne 0x2794
cmpl $0x0, -0x3c(%rbp)
jne 0x2794
movq -0x58(%rbp), %rax
movslq -0x28(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x80(%rbp)
movl -0x2c(%rbp), %eax
imull -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x80(%rbp), %rax
movslq %ecx, %rcx
movb (%rax,%rcx), %al
movb %al, -0x59(%rbp)
jmp 0x29ba
cmpl $0x1, -0x38(%rbp)
jne 0x2856
cmpl $0x0, -0x3c(%rbp)
jne 0x2856
movq -0x58(%rbp), %rax
movq %rax, -0x90(%rbp)
movl -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x90(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movslq -0x28(%rbp), %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movl -0x2c(%rbp), %eax
imull -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x88(%rbp), %rax
movslq %ecx, %rcx
movb -0x1(%rax,%rcx), %al
movb %al, -0x5a(%rbp)
movzbl -0x5a(%rbp), %ecx
andl $0xc0, %ecx
sarl $0x6, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
movzbl -0x5a(%rbp), %ecx
andl $0x30, %ecx
sarl $0x2, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
movzbl -0x5a(%rbp), %ecx
andl $0xc, %ecx
shll $0x2, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
movzbl -0x5a(%rbp), %ecx
andl $0x3, %ecx
shll $0x6, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
jmp 0x29b8
cmpl $0x0, -0x38(%rbp)
jne 0x28c7
cmpl $0x1, -0x3c(%rbp)
jne 0x28c7
movq -0x58(%rbp), %rax
movslq -0x28(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movl -0x4c(%rbp), %eax
imull -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0xa0(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
imull -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x98(%rbp), %rax
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
movb (%rax,%rcx), %al
movb %al, -0x59(%rbp)
jmp 0x29b6
cmpl $0x1, -0x38(%rbp)
jne 0x29b4
cmpl $0x1, -0x3c(%rbp)
jne 0x29b4
movq -0x58(%rbp), %rax
movq %rax, -0xb8(%rbp)
movl -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0xb8(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movslq -0x28(%rbp), %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
addq $-0x1, %rax
movq %rax, -0xb0(%rbp)
movl -0x4c(%rbp), %eax
imull -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0xb0(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
imull -0x48(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0xa8(%rbp), %rax
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
movb (%rax,%rcx), %al
movb %al, -0x5b(%rbp)
movzbl -0x5b(%rbp), %ecx
andl $0xc0, %ecx
sarl $0x6, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
movzbl -0x5b(%rbp), %ecx
andl $0x30, %ecx
sarl $0x2, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
movzbl -0x5b(%rbp), %ecx
andl $0xc, %ecx
shll $0x2, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
movzbl -0x5b(%rbp), %ecx
andl $0x3, %ecx
shll $0x6, %ecx
movzbl -0x59(%rbp), %eax
orl %ecx, %eax
movb %al, -0x59(%rbp)
jmp 0x29b6
jmp 0x29b8
jmp 0x29ba
movzbl -0x59(%rbp), %eax
sarl $0x6, %eax
andl $0x3, %eax
movb %al, -0x5c(%rbp)
movzbl -0x59(%rbp), %eax
sarl $0x4, %eax
andl $0x3, %eax
movb %al, -0x5d(%rbp)
movzbl -0x59(%rbp), %eax
sarl $0x2, %eax
andl $0x3, %eax
movb %al, -0x5e(%rbp)
movzbl -0x59(%rbp), %eax
andl $0x3, %eax
movb %al, -0x5f(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl -0x5c(%rbp), %ecx
movb 0x7(%rax,%rcx), %al
movb %al, -0x60(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl -0x5d(%rbp), %ecx
movb 0x7(%rax,%rcx), %al
movb %al, -0x61(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl -0x5e(%rbp), %ecx
movb 0x7(%rax,%rcx), %al
movb %al, -0x62(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movzbl -0x5f(%rbp), %ecx
movb 0x7(%rax,%rcx), %al
movb %al, -0x63(%rbp)
movq -0x20(%rbp), %rax
movl -0x30(%rbp), %ecx
movq -0x8(%rbp), %rdx
imull 0xc0c(%rdx), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movl -0x34(%rbp), %ecx
movq -0x8(%rbp), %rdx
imull 0xc08(%rdx), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movl -0x28(%rbp), %ecx
movq -0x8(%rbp), %rdx
imull 0xc0c(%rdx), %ecx
shll $0x2, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movq -0x8(%rbp), %rdx
imull 0xc08(%rdx), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2ad5
movzbl -0x5c(%rbp), %eax
cmpl $0x3, %eax
je 0x2b0a
movzbl -0x60(%rbp), %edi
callq 0x2c60
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, (%rax)
movzbl -0x60(%rbp), %edi
callq 0x2c80
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x1(%rax)
movzbl -0x60(%rbp), %edi
callq 0x2cb0
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x2(%rax)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2b31
movzbl -0x5d(%rbp), %eax
cmpl $0x3, %eax
je 0x2b67
movzbl -0x61(%rbp), %edi
callq 0x2c60
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x3(%rax)
movzbl -0x61(%rbp), %edi
callq 0x2c80
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x4(%rax)
movzbl -0x61(%rbp), %edi
callq 0x2cb0
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x5(%rax)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2b8e
movzbl -0x5e(%rbp), %eax
cmpl $0x3, %eax
je 0x2bc4
movzbl -0x62(%rbp), %edi
callq 0x2c60
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x6(%rax)
movzbl -0x62(%rbp), %edi
callq 0x2c80
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x7(%rax)
movzbl -0x62(%rbp), %edi
callq 0x2cb0
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x8(%rax)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movb (%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2beb
movzbl -0x5f(%rbp), %eax
cmpl $0x3, %eax
je 0x2c21
movzbl -0x63(%rbp), %edi
callq 0x2c60
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0x9(%rax)
movzbl -0x63(%rbp), %edi
callq 0x2c80
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0xa(%rax)
movzbl -0x63(%rbp), %edi
callq 0x2cb0
movb %al, %cl
movq -0x70(%rbp), %rax
movb %cl, 0xb(%rax)
jmp 0x2c23
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x2734
jmp 0x2c33
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x2721
jmp 0x2c43
jmp 0x2c45
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x2514
addq $0xc0, %rsp
popq %rbp
retq
nopl (%rax)