// File: /workspace/github_c_makefile_star2_O0/buptlxb[P]xRay/disasm/instr_set/opcodes_Grp15.c
// Function: G15_
void __bea_callspec__ G15_(PDISASM pMyDisasm)
{
    GV.REGOPCODE = ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 3) & 0x7;
    if (GV.REGOPCODE == 0) {
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        if (GV.MOD_!= 0x3) {
            GV.MemDecoration = Arg1multibytes;
            (*pMyDisasm).Instruction.Category = FPU_INSTRUCTION+STATE_MANAGEMENT;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "fxsave ");
            #endif
            (*pMyDisasm).Argument1.ArgSize = 512;
            (*pMyDisasm).Argument2.ArgType = REGISTER_TYPE+FPU_REG+MMX_REG+SSE_REG;
            (*pMyDisasm).Argument2.ArgSize = 512;
        }
        else {
            FailDecode(pMyDisasm);
        }
    }
    else if (GV.REGOPCODE == 1) {
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        if (GV.MOD_!= 0x3) {
            GV.MemDecoration = Arg2multibytes;
            (*pMyDisasm).Instruction.Category = FPU_INSTRUCTION+STATE_MANAGEMENT;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "fxrstor ");
            #endif
            (*pMyDisasm).Argument2.ArgSize = 512;
            (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+FPU_REG+MMX_REG+SSE_REG;
            (*pMyDisasm).Argument1.ArgSize = 512;
        }
        else {
            FailDecode(pMyDisasm);
        }

    }
    else if (GV.REGOPCODE == 2) {
        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
        if (GV.MOD_!= 0x3) {
            GV.MemDecoration = Arg2dword;
            (*pMyDisasm).Instruction.Category = SSE_INSTRUCTION+STATE_MANAGEMENT;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "ldmxcsr ");
            #endif
            (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+SPECIAL_REG+REG1;
            (*pMyDisasm).Argument1.ArgSize = 32;
        }
        else {
            FailDecode(pMyDisasm);
        }

    }
    else if (GV.REGOPCODE == 3) {
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        if (GV.MOD_!= 0x3) {
            GV.MemDecoration = Arg1dword;
            (*pMyDisasm).Instruction.Category = SSE_INSTRUCTION+STATE_MANAGEMENT;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "stmxcsr ");
            #endif
            (*pMyDisasm).Argument2.ArgType = REGISTER_TYPE+SPECIAL_REG+REG1;
            (*pMyDisasm).Argument2.ArgSize = 32;
        }
        else {
            FailDecode(pMyDisasm);
        }

    }

    else if (GV.REGOPCODE == 4) {
        MOD_RM(&(*pMyDisasm).Argument1, pMyDisasm);
        if (GV.MOD_!= 0x3) {
            GV.MemDecoration = Arg1multibytes;
            (*pMyDisasm).Instruction.Category = FPU_INSTRUCTION+STATE_MANAGEMENT;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "xsave ");
            #endif
            (*pMyDisasm).Argument1.ArgSize = 512;
            (*pMyDisasm).Argument2.ArgType = REGISTER_TYPE+FPU_REG+MMX_REG+SSE_REG;
            (*pMyDisasm).Argument2.ArgSize = 512;
        }
        else {
            FailDecode(pMyDisasm);
        }
    }

    else if (GV.REGOPCODE == 5) {
        GV.MOD_= ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 6) & 0x3;
        if (GV.MOD_== 0x3) {
            (*pMyDisasm).Instruction.Category = SSE2_INSTRUCTION+CACHEABILITY_CONTROL;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "lfence ");
            #endif
        }
        else {
            MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
            GV.MemDecoration = Arg2multibytes;
            (*pMyDisasm).Instruction.Category = FPU_INSTRUCTION+STATE_MANAGEMENT;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "xrstor ");
            #endif
            (*pMyDisasm).Argument2.ArgSize = 512;
            (*pMyDisasm).Argument1.ArgType = REGISTER_TYPE+FPU_REG+MMX_REG+SSE_REG;
            (*pMyDisasm).Argument1.ArgSize = 512;
        }

    }
    else if (GV.REGOPCODE == 6) {
        GV.MOD_= ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 6) & 0x3;
        if (GV.MOD_== 0x3) {
            (*pMyDisasm).Instruction.Category = SSE2_INSTRUCTION+CACHEABILITY_CONTROL;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "mfence ");
            #endif
        }
        else {
            FailDecode(pMyDisasm);
        }
    }
    else if (GV.REGOPCODE == 7) {
        GV.MOD_= ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 6) & 0x3;
        if (GV.MOD_== 0x3) {
            (*pMyDisasm).Instruction.Category = SSE2_INSTRUCTION+CACHEABILITY_CONTROL;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "sfence ");
            #endif
        }
        else {
            GV.OperandSize = 8;
            MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
            GV.OperandSize = 32;
            GV.MemDecoration = Arg2byte;
            (*pMyDisasm).Instruction.Category = SSE2_INSTRUCTION+CACHEABILITY_CONTROL;
            #ifndef BEA_LIGHT_DISASSEMBLY
               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "clflush ");
            #endif
        }

    }

    else {
        FailDecode(pMyDisasm);
    }
    GV.EIP_+= GV.DECALAGE_EIP+2;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x1f0(%rax), %rax
movzbl 0x1(%rax), %ecx
sarl $0x3, %ecx
andl $0x7, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x240(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x240(%rax)
jne 0x3ba38
movq -0x8(%rbp), %rdi
addq $0x9c, %rdi
movq -0x8(%rbp), %rsi
callq 0x4dbc0
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
je 0x3ba2a
movq -0x8(%rbp), %rax
movl $0x5, 0x210(%rax)
movq -0x8(%rbp), %rax
movl $0x20013, 0x60(%rax)    # imm = 0x20013
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x16066(%rip), %rsi     # 0x51a5f
callq 0x81c0
movq -0x8(%rbp), %rax
movl $0x200, 0xe0(%rax)      # imm = 0x200
movq -0x8(%rbp), %rax
movl $0x200d0000, 0x144(%rax) # imm = 0x200D0000
movq -0x8(%rbp), %rax
movl $0x200, 0x148(%rax)     # imm = 0x200
jmp 0x3ba33
movq -0x8(%rbp), %rdi
callq 0x30050
jmp 0x3bea6
movq -0x8(%rbp), %rax
cmpl $0x1, 0x240(%rax)
jne 0x3bad5
movq -0x8(%rbp), %rdi
addq $0x104, %rdi            # imm = 0x104
movq -0x8(%rbp), %rsi
callq 0x4dbc0
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
je 0x3bac7
movq -0x8(%rbp), %rax
movl $0x69, 0x210(%rax)
movq -0x8(%rbp), %rax
movl $0x20013, 0x60(%rax)    # imm = 0x20013
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15fd1(%rip), %rsi     # 0x51a67
callq 0x81c0
movq -0x8(%rbp), %rax
movl $0x200, 0x148(%rax)     # imm = 0x200
movq -0x8(%rbp), %rax
movl $0x200d0000, 0xdc(%rax) # imm = 0x200D0000
movq -0x8(%rbp), %rax
movl $0x200, 0xe0(%rax)      # imm = 0x200
jmp 0x3bad0
movq -0x8(%rbp), %rdi
callq 0x30050
jmp 0x3bea4
movq -0x8(%rbp), %rax
cmpl $0x2, 0x240(%rax)
jne 0x3bb60
movq -0x8(%rbp), %rdi
addq $0x104, %rdi            # imm = 0x104
movq -0x8(%rbp), %rsi
callq 0x4dbc0
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
je 0x3bb52
movq -0x8(%rbp), %rax
movl $0x67, 0x210(%rax)
movq -0x8(%rbp), %rax
movl $0x80013, 0x60(%rax)    # imm = 0x80013
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15f41(%rip), %rsi     # 0x51a70
callq 0x81c0
movq -0x8(%rbp), %rax
movl $0x20400002, 0xdc(%rax) # imm = 0x20400002
movq -0x8(%rbp), %rax
movl $0x20, 0xe0(%rax)
jmp 0x3bb5b
movq -0x8(%rbp), %rdi
callq 0x30050
jmp 0x3bea2
movq -0x8(%rbp), %rax
cmpl $0x3, 0x240(%rax)
jne 0x3bbeb
movq -0x8(%rbp), %rdi
addq $0x9c, %rdi
movq -0x8(%rbp), %rsi
callq 0x4dbc0
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
je 0x3bbdd
movq -0x8(%rbp), %rax
movl $0x3, 0x210(%rax)
movq -0x8(%rbp), %rax
movl $0x80013, 0x60(%rax)    # imm = 0x80013
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15ebf(%rip), %rsi     # 0x51a79
callq 0x81c0
movq -0x8(%rbp), %rax
movl $0x20400002, 0x144(%rax) # imm = 0x20400002
movq -0x8(%rbp), %rax
movl $0x20, 0x148(%rax)
jmp 0x3bbe6
movq -0x8(%rbp), %rdi
callq 0x30050
jmp 0x3bea0
movq -0x8(%rbp), %rax
cmpl $0x4, 0x240(%rax)
jne 0x3bc88
movq -0x8(%rbp), %rdi
addq $0x9c, %rdi
movq -0x8(%rbp), %rsi
callq 0x4dbc0
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
je 0x3bc7a
movq -0x8(%rbp), %rax
movl $0x5, 0x210(%rax)
movq -0x8(%rbp), %rax
movl $0x20013, 0x60(%rax)    # imm = 0x20013
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15e17(%rip), %rsi     # 0x51a60
callq 0x81c0
movq -0x8(%rbp), %rax
movl $0x200, 0xe0(%rax)      # imm = 0x200
movq -0x8(%rbp), %rax
movl $0x200d0000, 0x144(%rax) # imm = 0x200D0000
movq -0x8(%rbp), %rax
movl $0x200, 0x148(%rax)     # imm = 0x200
jmp 0x3bc83
movq -0x8(%rbp), %rdi
callq 0x30050
jmp 0x3be9e
movq -0x8(%rbp), %rax
cmpl $0x5, 0x240(%rax)
jne 0x3bd5e
movq -0x8(%rbp), %rax
movq 0x1f0(%rax), %rax
movzbl 0x1(%rax), %ecx
sarl $0x6, %ecx
andl $0x3, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x218(%rax)
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
jne 0x3bcea
movq -0x8(%rbp), %rax
movl $0x100019, 0x60(%rax)   # imm = 0x100019
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15d9f(%rip), %rsi     # 0x51a82
callq 0x81c0
jmp 0x3bd59
movq -0x8(%rbp), %rdi
addq $0x104, %rdi            # imm = 0x104
movq -0x8(%rbp), %rsi
callq 0x4dbc0
movq -0x8(%rbp), %rax
movl $0x69, 0x210(%rax)
movq -0x8(%rbp), %rax
movl $0x20013, 0x60(%rax)    # imm = 0x20013
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15d3e(%rip), %rsi     # 0x51a68
callq 0x81c0
movq -0x8(%rbp), %rax
movl $0x200, 0x148(%rax)     # imm = 0x200
movq -0x8(%rbp), %rax
movl $0x200d0000, 0xdc(%rax) # imm = 0x200D0000
movq -0x8(%rbp), %rax
movl $0x200, 0xe0(%rax)      # imm = 0x200
jmp 0x3be9c
movq -0x8(%rbp), %rax
cmpl $0x6, 0x240(%rax)
jne 0x3bdca
movq -0x8(%rbp), %rax
movq 0x1f0(%rax), %rax
movzbl 0x1(%rax), %ecx
sarl $0x6, %ecx
andl $0x3, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x218(%rax)
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
jne 0x3bdbc
movq -0x8(%rbp), %rax
movl $0x100019, 0x60(%rax)   # imm = 0x100019
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15cd5(%rip), %rsi     # 0x51a8a
callq 0x81c0
jmp 0x3bdc5
movq -0x8(%rbp), %rdi
callq 0x30050
jmp 0x3be9a
movq -0x8(%rbp), %rax
cmpl $0x7, 0x240(%rax)
jne 0x3be8f
movq -0x8(%rbp), %rax
movq 0x1f0(%rax), %rax
movzbl 0x1(%rax), %ecx
sarl $0x6, %ecx
andl $0x3, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x218(%rax)
movq -0x8(%rbp), %rax
cmpl $0x3, 0x218(%rax)
jne 0x3be2c
movq -0x8(%rbp), %rax
movl $0x100019, 0x60(%rax)   # imm = 0x100019
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15c6d(%rip), %rsi     # 0x51a92
callq 0x81c0
jmp 0x3be8d
movq -0x8(%rbp), %rax
movl $0x8, 0x20c(%rax)
movq -0x8(%rbp), %rdi
addq $0x104, %rdi            # imm = 0x104
movq -0x8(%rbp), %rsi
callq 0x4dbc0
movq -0x8(%rbp), %rax
movl $0x20, 0x20c(%rax)
movq -0x8(%rbp), %rax
movl $0x65, 0x210(%rax)
movq -0x8(%rbp), %rax
movl $0x100019, 0x60(%rax)   # imm = 0x100019
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
addq $0x8, %rdi
leaq 0x15c12(%rip), %rsi     # 0x51a9a
callq 0x81c0
jmp 0x3be98
movq -0x8(%rbp), %rdi
callq 0x30050
jmp 0x3be9a
jmp 0x3be9c
jmp 0x3be9e
jmp 0x3bea0
jmp 0x3bea2
jmp 0x3bea4
jmp 0x3bea6
movq -0x8(%rbp), %rax
movl 0x244(%rax), %eax
addl $0x2, %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x8(%rbp), %rax
addq 0x1f0(%rax), %rcx
movq %rcx, 0x1f0(%rax)
addq $0x10, %rsp
popq %rbp
retq
nop