// File: /workspace/github_c_makefile_star2_O0/hobo0xcc[P]rve/src/cpu.c
// Function: ExecCompressedInstr
void ExecCompressedInstr(State *state, uint16_t instr) {
    if (instr == 0) {
        state->excepted = true;
        printf("Compressed Instr Illegal\n");
        state->exception_code = IllegalInstruction;
        return;
    }
    uint8_t opcode = instr & SetNBits(2);

    switch (opcode) {
    case 0x0: {
        uint8_t rd = (instr >> 2) & SetNBits(2);
        int8_t funct3 = (instr >> 13) & SetNBits(3);
        uint8_t f_5_12 = (instr >> 5) & SetNBits(8);

        if (funct3 == 0x0 && f_5_12 != 0) {
            ExecCAddi4spn(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x1) {
            // TODO: Implement c.fld.
            state->pc += 2;
        } else if (funct3 == 0x2) {
            ExecCLw(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x3) {
            ExecCLd(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x5) {
            // TODO: Implement c.fsd.
            state->pc += 2;
        } else if (funct3 == 0x6) {
            ExecCSw(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x7) {
            ExecCSd(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else {
            Error("Invalid instruction: funct3=%d", funct3);
        }
    } break;
    case 0x1: {
        uint8_t r1 = (instr >> 7) & SetNBits(3);
        int32_t immediate = Sext(((instr >> 2) & SetNBits(5)) |
                                     ((instr >> 12 & SetNBits(1)) << 5),
                                 5);
        uint8_t funct3 = (instr >> 13) & SetNBits(3);
        uint8_t funct2_1 = (instr >> 10) & SetNBits(2);
        uint8_t funct2_2 = (instr >> 5) & SetNBits(2);
        uint8_t funct6 = (instr >> 10) & SetNBits(6);
        uint8_t rd = instr >> 7 & SetNBits(5);

        if (funct6 == 0x23 && funct2_2 == 0x0) {
            ExecCSub(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct6 == 0x23 && funct2_2 == 0x1) {
            ExecCXor(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct6 == 0x23 && funct2_2 == 0x2) {
            ExecCOr(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct6 == 0x23 && funct2_2 == 0x3) {
            ExecCAnd(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct6 == 0x27 && funct2_2 == 0x0) {
            ExecCSubw(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct6 == 0x27 && funct2_2 == 0x1) {
            ExecCAddw(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x0 && rd == 0) {
            // C.NOP
            state->pc += 2;
        } else if (funct3 == 0x0 && rd != 0x0) {
            ExecCAddi(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x1 && rd != 0x0) {
            ExecCAddiw(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x2) {
            ExecCLi(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x3 && rd == 2) {
            ExecCAddi16sp(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x3) {
            ExecCLui(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x4 && funct2_1 == 0x0) {
            ExecCSrli(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x4 && funct2_1 == 0x1) {
            ExecCSrai(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x4 && funct2_1 == 0x2) {
            ExecCAndi(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x5) {
            ExecCJ(state, instr);
            if (state->excepted) return;
        } else if (funct3 == 0x6) {
            ExecCBeqz(state, instr);
            if (state->excepted) return;
        } else if (funct3 == 0x7) {
            ExecCBnez(state, instr);
            if (state->excepted) return;
        } else {
            Error("Invalid instruction");
        }
    } break;
    case 0x2: {
        uint8_t funct3 = (instr >> 13) & SetNBits(3);
        uint8_t f_7_11 = (instr >> 7) & SetNBits(5);
        uint8_t f_2_6 = (instr >> 2) & SetNBits(5);
        uint8_t f_12 = (instr >> 12) & SetNBits(1);

        if (funct3 == 0x0 && f_12 == 0 && f_2_6 == 0 && f_7_11 != 0) {
            printf("c.slli64\n");
            state->pc += 2;
            // TODO: Understand c.slli64.
        } else if (funct3 == 0x0 && f_7_11 != 0) {
            ExecCSlli(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x1) {
            // TODO: Implement c.fldsp.
        } else if (funct3 == 0x2 && f_7_11 != 0) {
            ExecCLwsp(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x3) {
            ExecCLdsp(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x4 && f_12 == 0 && f_7_11 != 0 && f_2_6 == 0) {
            ExecCJr(state, instr);
            if (state->excepted) return;
        } else if (funct3 == 0x4 && f_12 == 0 && f_7_11 != 0 && f_2_6 != 0) {
            ExecCMv(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x4 && f_12 == 1 && f_7_11 == 0 && f_2_6 == 0) {
            // ExecCEbreak(state, instr);
            state->pc += 2;
        } else if (funct3 == 0x4 && f_12 == 1 && f_7_11 != 0 && f_2_6 == 0) {
            ExecCJalr(state, instr);
            if (state->excepted) return;
        } else if (funct3 == 0x4 && f_12 == 1 && f_7_11 != 0 && f_2_6 != 0) {
            ExecCAdd(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x5) {
            // TODO: Implement c.fsdsp.
            state->pc += 2;
        } else if (funct3 == 0x6) {
            ExecCSwsp(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else if (funct3 == 0x7) {
            ExecCSdsp(state, instr);
            if (state->excepted) return;
            state->pc += 2;
        } else {
            Error("Invalid instruction");
        }
    } break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movzwl -0xa(%rbp), %eax
cmpl $0x0, %eax
jne 0x9f6c
movq -0x8(%rbp), %rax
movb $0x1, 0x8138(%rax)
leaq 0x567a(%rip), %rdi      # 0xf5cb
movb $0x0, %al
callq 0x10a0
movq -0x8(%rbp), %rax
movq $0x2, 0x8140(%rax)
jmp 0xab3b
movzwl -0xa(%rbp), %eax
movl %eax, -0x28(%rbp)
movl $0x2, %edi
callq 0x12b0
movq %rax, %rcx
movl -0x28(%rbp), %eax
andl %ecx, %eax
movb %al, -0xb(%rbp)
movzbl -0xb(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x9fb4
jmp 0x9f95
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0xa1a5
jmp 0x9fa3
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0xa75f
jmp 0xab3b
movzwl -0xa(%rbp), %eax
sarl $0x2, %eax
cltq
movq %rax, -0x40(%rbp)
movl $0x2, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x40(%rbp), %rax
andq %rcx, %rax
movb %al, -0xc(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0xd, %eax
cltq
movq %rax, -0x38(%rbp)
movl $0x3, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x38(%rbp), %rax
andq %rcx, %rax
movb %al, -0xd(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0x5, %eax
cltq
movq %rax, -0x30(%rbp)
movl $0x8, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x30(%rbp), %rax
andq %rcx, %rax
movb %al, -0xe(%rbp)
movsbl -0xd(%rbp), %eax
cmpl $0x0, %eax
jne 0xa064
movzbl -0xe(%rbp), %eax
cmpl $0x0, %eax
je 0xa064
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8320
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa051
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa1a0
movsbl -0xd(%rbp), %eax
cmpl $0x1, %eax
jne 0xa080
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa19e
movsbl -0xd(%rbp), %eax
cmpl $0x2, %eax
jne 0xa0bb
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8440
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa0a8
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa19c
movsbl -0xd(%rbp), %eax
cmpl $0x3, %eax
jne 0xa0f6
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8590
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa0e3
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa19a
movsbl -0xd(%rbp), %eax
cmpl $0x5, %eax
jne 0xa112
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa198
movsbl -0xd(%rbp), %eax
cmpl $0x6, %eax
jne 0xa14a
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8680
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa13a
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa196
movsbl -0xd(%rbp), %eax
cmpl $0x7, %eax
jne 0xa182
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x87b0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa172
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa194
movsbl -0xd(%rbp), %esi
leaq 0x5458(%rip), %rdi      # 0xf5e5
movb $0x0, %al
callq 0xd690
jmp 0xa196
jmp 0xa198
jmp 0xa19a
jmp 0xa19c
jmp 0xa19e
jmp 0xa1a0
jmp 0xab3b
movzwl -0xa(%rbp), %eax
sarl $0x7, %eax
cltq
movq %rax, -0x88(%rbp)
movl $0x3, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x88(%rbp), %rax
andq %rcx, %rax
movb %al, -0xf(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0x2, %eax
cltq
movq %rax, -0x80(%rbp)
movl $0x5, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x80(%rbp), %rax
andq %rcx, %rax
movq %rax, -0x78(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0xc, %eax
cltq
movq %rax, -0x70(%rbp)
movl $0x1, %edi
callq 0x12b0
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movq -0x70(%rbp), %rax
andq %rcx, %rax
shlq $0x5, %rax
orq %rax, %rdi
movl $0x5, %esi
callq 0x4470
movl %eax, -0x14(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0xd, %eax
cltq
movq %rax, -0x68(%rbp)
movl $0x3, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x68(%rbp), %rax
andq %rcx, %rax
movb %al, -0x15(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0xa, %eax
cltq
movq %rax, -0x60(%rbp)
movl $0x2, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x60(%rbp), %rax
andq %rcx, %rax
movb %al, -0x16(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0x5, %eax
cltq
movq %rax, -0x58(%rbp)
movl $0x2, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x58(%rbp), %rax
andq %rcx, %rax
movb %al, -0x17(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0xa, %eax
cltq
movq %rax, -0x50(%rbp)
movl $0x6, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x50(%rbp), %rax
andq %rcx, %rax
movb %al, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0x7, %eax
cltq
movq %rax, -0x48(%rbp)
movl $0x5, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x48(%rbp), %rax
andq %rcx, %rax
movb %al, -0x19(%rbp)
movzbl -0x18(%rbp), %eax
cmpl $0x23, %eax
jne 0xa325
movzbl -0x17(%rbp), %eax
cmpl $0x0, %eax
jne 0xa325
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9450
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa312
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa75a
movzbl -0x18(%rbp), %eax
cmpl $0x23, %eax
jne 0xa369
movzbl -0x17(%rbp), %eax
cmpl $0x1, %eax
jne 0xa369
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9500
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa356
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa758
movzbl -0x18(%rbp), %eax
cmpl $0x23, %eax
jne 0xa3ad
movzbl -0x17(%rbp), %eax
cmpl $0x2, %eax
jne 0xa3ad
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x95b0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa39a
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa756
movzbl -0x18(%rbp), %eax
cmpl $0x23, %eax
jne 0xa3f1
movzbl -0x17(%rbp), %eax
cmpl $0x3, %eax
jne 0xa3f1
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9660
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa3de
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa754
movzbl -0x18(%rbp), %eax
cmpl $0x27, %eax
jne 0xa435
movzbl -0x17(%rbp), %eax
cmpl $0x0, %eax
jne 0xa435
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9710
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa422
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa752
movzbl -0x18(%rbp), %eax
cmpl $0x27, %eax
jne 0xa479
movzbl -0x17(%rbp), %eax
cmpl $0x1, %eax
jne 0xa479
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x97e0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa466
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa750
movzbl -0x15(%rbp), %eax
cmpl $0x0, %eax
jne 0xa49e
movzbl -0x19(%rbp), %eax
cmpl $0x0, %eax
jne 0xa49e
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa74e
movzbl -0x15(%rbp), %eax
cmpl $0x0, %eax
jne 0xa4e2
movzbl -0x19(%rbp), %eax
cmpl $0x0, %eax
je 0xa4e2
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x88a0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa4cf
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa74c
movzbl -0x15(%rbp), %eax
cmpl $0x1, %eax
jne 0xa526
movzbl -0x19(%rbp), %eax
cmpl $0x0, %eax
je 0xa526
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8980
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa513
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa74a
movzbl -0x15(%rbp), %eax
cmpl $0x2, %eax
jne 0xa561
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8a70
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa54e
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa748
movzbl -0x15(%rbp), %eax
cmpl $0x3, %eax
jne 0xa5a5
movzbl -0x19(%rbp), %eax
cmpl $0x2, %eax
jne 0xa5a5
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8b20
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa592
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa746
movzbl -0x15(%rbp), %eax
cmpl $0x3, %eax
jne 0xa5e0
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8c70
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa5cd
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa744
movzbl -0x15(%rbp), %eax
cmpl $0x4, %eax
jne 0xa624
movzbl -0x16(%rbp), %eax
cmpl $0x0, %eax
jne 0xa624
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8d40
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa611
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa742
movzbl -0x15(%rbp), %eax
cmpl $0x4, %eax
jne 0xa668
movzbl -0x16(%rbp), %eax
cmpl $0x1, %eax
jne 0xa668
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8e10
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa655
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa740
movzbl -0x15(%rbp), %eax
cmpl $0x4, %eax
jne 0xa6ac
movzbl -0x16(%rbp), %eax
cmpl $0x2, %eax
jne 0xa6ac
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8ee0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa699
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xa73e
movzbl -0x15(%rbp), %eax
cmpl $0x5, %eax
jne 0xa6d6
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x8fb0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa6d4
jmp 0xab3b
jmp 0xa73c
movzbl -0x15(%rbp), %eax
cmpl $0x6, %eax
jne 0xa700
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9170
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa6fe
jmp 0xab3b
jmp 0xa73a
movzbl -0x15(%rbp), %eax
cmpl $0x7, %eax
jne 0xa72a
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x92e0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa728
jmp 0xab3b
jmp 0xa738
leaq 0x4ed3(%rip), %rdi      # 0xf604
movb $0x0, %al
callq 0xd690
jmp 0xa73a
jmp 0xa73c
jmp 0xa73e
jmp 0xa740
jmp 0xa742
jmp 0xa744
jmp 0xa746
jmp 0xa748
jmp 0xa74a
jmp 0xa74c
jmp 0xa74e
jmp 0xa750
jmp 0xa752
jmp 0xa754
jmp 0xa756
jmp 0xa758
jmp 0xa75a
jmp 0xab3b
movzwl -0xa(%rbp), %eax
sarl $0xd, %eax
cltq
movq %rax, -0xa8(%rbp)
movl $0x3, %edi
callq 0x12b0
movq %rax, %rcx
movq -0xa8(%rbp), %rax
andq %rcx, %rax
movb %al, -0x1a(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0x7, %eax
cltq
movq %rax, -0xa0(%rbp)
movl $0x5, %edi
callq 0x12b0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
andq %rcx, %rax
movb %al, -0x1b(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0x2, %eax
cltq
movq %rax, -0x98(%rbp)
movl $0x5, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x98(%rbp), %rax
andq %rcx, %rax
movb %al, -0x1c(%rbp)
movzwl -0xa(%rbp), %eax
sarl $0xc, %eax
cltq
movq %rax, -0x90(%rbp)
movl $0x1, %edi
callq 0x12b0
movq %rax, %rcx
movq -0x90(%rbp), %rax
andq %rcx, %rax
movb %al, -0x1d(%rbp)
movzbl -0x1a(%rbp), %eax
cmpl $0x0, %eax
jne 0xa84c
movzbl -0x1d(%rbp), %eax
cmpl $0x0, %eax
jne 0xa84c
movzbl -0x1c(%rbp), %eax
cmpl $0x0, %eax
jne 0xa84c
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
je 0xa84c
leaq 0x4de6(%rip), %rdi      # 0xf618
movb $0x0, %al
callq 0x10a0
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab39
movzbl -0x1a(%rbp), %eax
cmpl $0x0, %eax
jne 0xa890
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
je 0xa890
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x98b0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa87d
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab37
movzbl -0x1a(%rbp), %eax
cmpl $0x1, %eax
jne 0xa89e
jmp 0xab35
movzbl -0x1a(%rbp), %eax
cmpl $0x2, %eax
jne 0xa8e2
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
je 0xa8e2
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9970
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa8cf
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab33
movzbl -0x1a(%rbp), %eax
cmpl $0x3, %eax
jne 0xa91d
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9a90
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa90a
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab31
movzbl -0x1a(%rbp), %eax
cmpl $0x4, %eax
jne 0xa965
movzbl -0x1d(%rbp), %eax
cmpl $0x0, %eax
jne 0xa965
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
je 0xa965
movzbl -0x1c(%rbp), %eax
cmpl $0x0, %eax
jne 0xa965
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9b80
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa960
jmp 0xab3b
jmp 0xab2f
movzbl -0x1a(%rbp), %eax
cmpl $0x4, %eax
jne 0xa9bb
movzbl -0x1d(%rbp), %eax
cmpl $0x0, %eax
jne 0xa9bb
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
je 0xa9bb
movzbl -0x1c(%rbp), %eax
cmpl $0x0, %eax
je 0xa9bb
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9be0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xa9a8
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab2d
movzbl -0x1a(%rbp), %eax
cmpl $0x4, %eax
jne 0xa9f2
movzbl -0x1d(%rbp), %eax
cmpl $0x1, %eax
jne 0xa9f2
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
jne 0xa9f2
movzbl -0x1c(%rbp), %eax
cmpl $0x0, %eax
jne 0xa9f2
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab2b
movzbl -0x1a(%rbp), %eax
cmpl $0x4, %eax
jne 0xaa3a
movzbl -0x1d(%rbp), %eax
cmpl $0x1, %eax
jne 0xaa3a
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
je 0xaa3a
movzbl -0x1c(%rbp), %eax
cmpl $0x0, %eax
jne 0xaa3a
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9c70
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xaa35
jmp 0xab3b
jmp 0xab29
movzbl -0x1a(%rbp), %eax
cmpl $0x4, %eax
jne 0xaa90
movzbl -0x1d(%rbp), %eax
cmpl $0x1, %eax
jne 0xaa90
movzbl -0x1b(%rbp), %eax
cmpl $0x0, %eax
je 0xaa90
movzbl -0x1c(%rbp), %eax
cmpl $0x0, %eax
je 0xaa90
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9cf0
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xaa7d
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab27
movzbl -0x1a(%rbp), %eax
cmpl $0x5, %eax
jne 0xaaa9
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab25
movzbl -0x1a(%rbp), %eax
cmpl $0x6, %eax
jne 0xaade
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9d90
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xaace
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab23
movzbl -0x1a(%rbp), %eax
cmpl $0x7, %eax
jne 0xab13
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x9e60
movq -0x8(%rbp), %rax
testb $0x1, 0x8138(%rax)
je 0xab03
jmp 0xab3b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x2, %rcx
movq %rcx, (%rax)
jmp 0xab21
leaq 0x4aea(%rip), %rdi      # 0xf604
movb $0x0, %al
callq 0xd690
jmp 0xab23
jmp 0xab25
jmp 0xab27
jmp 0xab29
jmp 0xab2b
jmp 0xab2d
jmp 0xab2f
jmp 0xab31
jmp 0xab33
jmp 0xab35
jmp 0xab37
jmp 0xab39
jmp 0xab3b
addq $0xb0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)