Asus P5B-V

Dag-Erling Smørgrav des at des.no
Thu Jan 18 11:05:24 UTC 2007


I have some ACPI issues with an Asus P5B-V (Intel G965-based)
motherboard running amd64 -CURRENT:

 - no thermal information:

root at dma ~# sysctl hw.acpi
hw.acpi.supported_sleep_state: S1 S3 S4 S5
hw.acpi.power_button_state: S5
hw.acpi.sleep_button_state: S1
hw.acpi.lid_switch_state: NONE
hw.acpi.standby_state: S1
hw.acpi.suspend_state: S3
hw.acpi.sleep_delay: 1
hw.acpi.s4bios: 0
hw.acpi.verbose: 0
hw.acpi.disable_on_reboot: 0
hw.acpi.handle_reboot: 0
hw.acpi.cpu.cx_lowest: C1

 - all on-board devices seem to share the same interrupt:

root at dma ~# vmstat -i
interrupt                          total       rate
irq1: atkbd0                           8          0
irq19: skc0 uhci3*               5161490         52
irq21: ral0                      1209462         12
cpu0: timer                    194998438       1999
cpu1: timer                    194998251       1999
Total                          396367649       4064

(ral0 is the only PCI card in the system, everything else is
integrated on the motherboard)

 - on the bright side, SpeedStep works fine:

root at dma ~# sysctl dev.cpu
dev.cpu.0.%desc: ACPI CPU
dev.cpu.0.%driver: cpu
dev.cpu.0.%location: handle=\_PR_.CPU1
dev.cpu.0.%pnpinfo: _HID=none _UID=0
dev.cpu.0.%parent: acpi0
dev.cpu.0.freq: 598
dev.cpu.0.freq_levels: 2394/22464 2094/19656 1795/16848 1596/376 1396/329 1197/282 997/235 798/188 598/141 399/94 199/47
dev.cpu.0.cx_supported: C1/0
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_usage: 100.00%
dev.cpu.1.%desc: ACPI CPU
dev.cpu.1.%driver: cpu
dev.cpu.1.%location: handle=\_PR_.CPU2
dev.cpu.1.%pnpinfo: _HID=none _UID=0
dev.cpu.1.%parent: acpi0
dev.cpu.1.cx_supported: C1/0
dev.cpu.1.cx_lowest: C1
dev.cpu.1.cx_usage: 100.00%

   (no frequency control on CPU1 since they're both on the same die)

Attached are the output from acpidump -d and -t with and without ACPI
2.0 support (selectable in BIOS setup)

DES
-- 
Dag-Erling Smørgrav - des at des.no

-------------- next part --------------
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20051021
 *
 * Disassembly of /tmp/acpidump.e8Rf7q, Wed Jan 17 13:11:06 2007
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "A0579", "A0579000", 0x00000000)
{
    Scope (_PR)
    {
        Processor (CPU1, 0x01, 0x00000810, 0x06)
        {
            OperationRegion (STBL, SystemMemory, 0x3EE99C90, 0x02E3)
            Name (NCPU, 0x02)
            Name (CFGD, 0x09)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                OperationRegion (PMRG, SystemIO, PMBS, 0x50)
                Field (PMRG, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x41), 
                    DEV4,   1, 
                    DEV5,   1, 
                    DEV6,   1, 
                    DEV7,   1, 
                    STS4,   1, 
                    STS5,   1, 
                    STS6,   1, 
                    STS7,   1
                }

                Store (One, STS7)
                Store (One, DEV7)
                If (LEqual (TBLD, Zero))
                {
                    Load (STBL, HNDL)
                    Store (One, TBLD)
                }
            }
        }
    }

    Scope (_PR)
    {
        Processor (CPU2, 0x02, 0x00000810, 0x06)
        {
            OperationRegion (STBL, SystemMemory, 0x3EE99F80, 0x02DA)
            Name (NCPU, 0x02)
            Name (CFGD, 0x09)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                If (LEqual (TBLD, Zero))
                {
                    Load (STBL, HNDL)
                    Store (One, TBLD)
                }
            }
        }
    }

    Scope (_PR)
    {
        Processor (CPU3, 0x03, 0x00000000, 0x00)
        {
            OperationRegion (STBL, SystemMemory, 0xFFFF0000, 0xFFFF)
            Name (NCPU, 0x80)
            Name (CFGD, 0x80)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                If (LEqual (TBLD, Zero))
                {
                    If (LAnd (LEqual (And (TYPE, One), One), LNot (LGreater (NCPU, 0x08))))
                    {
                        Load (STBL, HNDL)
                        Store (One, TBLD)
                    }
                }
            }
        }
    }

    Scope (_PR)
    {
        Processor (CPU4, 0x04, 0x00000000, 0x00)
        {
            OperationRegion (STBL, SystemMemory, 0xFFFF0000, 0xFFFF)
            Name (NCPU, 0x80)
            Name (CFGD, 0x80)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                OperationRegion (PMRG, SystemIO, PMBS, 0x50)
                Field (PMRG, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x41), 
                    DEV4,   1, 
                    DEV5,   1, 
                    DEV6,   1, 
                    DEV7,   1, 
                    STS4,   1, 
                    STS5,   1, 
                    STS6,   1, 
                    STS7,   1
                }

                If (LEqual (TBLD, Zero))
                {
                    If (LAnd (LEqual (And (TYPE, One), One), LNot (LGreater (NCPU, 0x08))))
                    {
                        Store (One, STS6)
                        Store (One, DEV6)
                        Load (STBL, HNDL)
                        Store (One, TBLD)
                    }
                }
            }
        }
    }

    Name (DP80, 0x80)
    Name (DP90, 0x90)
    Name (SPIO, 0x2E)
    Name (IOHW, 0x0290)
    Name (APIC, One)
    Name (SMIP, 0xB2)
    Name (PMBS, 0x0800)
    Name (PMLN, 0x80)
    Name (GPBS, 0x0480)
    Name (GPLN, 0x40)
    Name (SMBL, Zero)
    Name (PM30, 0x0830)
    Name (SUSW, 0xFF)
    Name (HTBA, 0xFED1F404)
    Name (EAQF, One)
    Name (CFTE, Zero)
    Name (TOBS, 0x0860)
    Name (SUCC, One)
    Name (NVLD, 0x02)
    Name (CRIT, 0x04)
    Name (NCRT, 0x06)
    Name (LIDS, One)
    Name (PCIB, 0xE0000000)
    Name (PCIL, 0x10000000)
    Name (SMBS, 0x0400)
    Name (CPUC, 0x04)
    OperationRegion (BIOS, SystemMemory, 0x3EE9E064, 0xFF)
    Field (BIOS, ByteAcc, NoLock, Preserve)
    {
        SS1,    1, 
        SS2,    1, 
        SS3,    1, 
        SS4,    1, 
        Offset (0x01), 
        IOST,   16, 
        TOPM,   32, 
        ROMS,   32, 
        MG1B,   32, 
        MG1L,   32, 
        MG2B,   32, 
        MG2L,   32, 
        Offset (0x1C), 
        CPB0,   32, 
        CPB1,   32, 
        CPB2,   32, 
        CPB3,   32, 
        ASSB,   8, 
        AOTB,   8, 
        AAXB,   32, 
        MSC1,   32, 
        MSC2,   32, 
        MSC3,   32, 
        MSC4,   32, 
        MSC5,   32, 
        MSC6,   32, 
        MSC7,   32, 
        MSC8,   32, 
        DMAX,   8, 
        HPTA,   32
    }

    Method (RRIO, 4, NotSerialized)
    {
        Store ("RRIO", Debug)
    }

    Method (RDMA, 3, NotSerialized)
    {
        Store ("rDMA", Debug)
    }

    Name (PICM, Zero)
    Method (_PIC, 1, NotSerialized)
    {
        If (Arg0)
        {
            Store (0xAA, DBG8)
        }
        Else
        {
            Store (0xAC, DBG8)
        }

        Store (Arg0, PICM)
    }

    Name (OSVR, Ones)
    Method (OSFL, 0, NotSerialized)
    {
        If (LNot (LEqual (OSVR, Ones)))
        {
            Return (OSVR)
        }

        If (LEqual (PICM, Zero))
        {
            Store (0xAC, DBG8)
        }

        Store (One, OSVR)
        If (CondRefOf (_OSI, Local1))
        {
            If (_OSI ("Windows 2001"))
            {
                Store (Zero, OSVR)
            }
        }
        Else
        {
            If (MCTH (_OS, "Microsoft Windows NT"))
            {
                Store (0x04, OSVR)
            }
            Else
            {
                If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
                {
                    Store (0x02, OSVR)
                }

                If (MCTH (_OS, "Linux"))
                {
                    Store (0x03, OSVR)
                }
            }
        }

        Return (OSVR)
    }

    Method (MCTH, 2, NotSerialized)
    {
        If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
        {
            Return (Zero)
        }

        Add (SizeOf (Arg0), One, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
            If (LNot (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (BUF1, Local0)))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

    Name (PRWP, Package (0x02)
    {
        Zero, 
        Zero
    })
    Method (GPRW, 2, NotSerialized)
    {
        Store (Arg0, Index (PRWP, Zero))
        Store (ShiftLeft (SS1, One), Local0)
        Or (Local0, ShiftLeft (SS2, 0x02), Local0)
        Or (Local0, ShiftLeft (SS3, 0x03), Local0)
        Or (Local0, ShiftLeft (SS4, 0x04), Local0)
        If (And (ShiftLeft (One, Arg1), Local0))
        {
            Store (Arg1, Index (PRWP, One))
        }
        Else
        {
            ShiftRight (Local0, One, Local0)
            If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
            {
                FindSetLeftBit (Local0, Index (PRWP, One))
            }
            Else
            {
                FindSetRightBit (Local0, Index (PRWP, One))
            }
        }

        Return (PRWP)
    }

    Name (WAKP, Package (0x02)
    {
        Zero, 
        Zero
    })
    OperationRegion (DEBX, SystemIO, 0x80, 0x02)
    Field (DEBX, WordAcc, NoLock, Preserve)
    {
        DBGX,   16
    }

    OperationRegion (DEB0, SystemIO, DP80, One)
    Field (DEB0, ByteAcc, NoLock, Preserve)
    {
        DBG8,   8
    }

    OperationRegion (DEB1, SystemIO, DP90, 0x02)
    Field (DEB1, WordAcc, NoLock, Preserve)
    {
        DBG9,   16
    }

    Scope (_SB)
    {
        Name (PR00, Package (0x18)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                Zero, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                Zero, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x03, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                One, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                LNKA, 
                Zero
            }
        })
        Name (AR00, Package (0x18)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                Zero, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                One, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                Zero, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                Zero, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                One, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x03, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                One, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x03, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                Zero, 
                0x10
            }
        })
        Name (PR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x13
            }
        })
        Name (PR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x13
            }
        })
        Name (PR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x10
            }
        })
        Name (PR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                Zero
            }
        })
        Name (AR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x11
            }
        })
        Name (PR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                Zero
            }
        })
        Name (AR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x12
            }
        })
        Name (PR08, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR08, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x13
            }
        })
        Name (PR09, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR09, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x10
            }
        })
        Name (PR01, Package (0x0E)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x02, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x03, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0004FFFF, 
                Zero, 
                LNKD, 
                Zero
            }
        })
        Name (AR01, Package (0x0E)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x02, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x03, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0004FFFF, 
                Zero, 
                Zero, 
                0x13
            }
        })
        Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared)
                {3,4,5,6,7,10,11,12,14,15}
        })
        Alias (PRSA, PRSB)
        Alias (PRSA, PRSC)
        Alias (PRSA, PRSD)
        Alias (PRSA, PRSE)
        Alias (PRSA, PRSF)
        Alias (PRSA, PRSG)
        Alias (PRSA, PRSH)
        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08"))
            Name (_ADR, Zero)
            Method (^BN00, 0, NotSerialized)
            {
                Return (Zero)
            }

            Method (_BBN, 0, NotSerialized)
            {
                Return (BN00 ())
            }

            Name (_UID, Zero)
            Method (_PRT, 0, NotSerialized)
            {
                If (PICM)
                {
                    Return (AR00)
                }

                Return (PR00)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                {
                    Return (0x02)
                }
                Else
                {
                    Return (0x03)
                }
            }

            Name (_CID, 0x030AD041)
            Device (MCH)
            {
                Name (_HID, EisaId ("PNP0C01"))
                Name (_UID, 0x0A)
                Name (_CRS, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED14000,         // Address Base
                        0x00006000,         // Address Length
                        )
                })
            }

            Method (NPTS, 1, NotSerialized)
            {
            }

            Method (NWAK, 1, NotSerialized)
            {
            }

            Device (P0P2)
            {
                Name (_ADR, 0x00010000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR02)
                    }

                    Return (PR02)
                }
            }

            Device (P0P1)
            {
                Name (_ADR, 0x001E0000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0B, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR01)
                    }

                    Return (PR01)
                }
            }

            Device (SBRG)
            {
                Name (_ADR, 0x001F0000)
                Device (IELK)
                {
                    Name (_HID, "AWY0001")
                    OperationRegion (RXA0, PCI_Config, 0xA0, 0x20)
                    Field (RXA0, ByteAcc, NoLock, Preserve)
                    {
                            ,   9, 
                        PBLV,   1, 
                        Offset (0x10), 
                            ,   1, 
                        PBMS,   1, 
                            ,   1, 
                        PMCS,   1, 
                        ECNS,   1, 
                        Offset (0x11), 
                        ECT1,   16, 
                        ELEN,   1, 
                        Offset (0x14)
                    }

                    Method (\_GPE._L0A, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.SBRG.IELK, 0x81)
                        Store (One, \_SB.PCI0.SBRG.IELK.PMCS)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        If (ELEN)
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Method (SMOD, 1, NotSerialized)
                    {
                    }

                    Method (GPBS, 0, NotSerialized)
                    {
                        Return (XOr (PBLV, One))
                    }
                }

                Method (SPTS, 1, NotSerialized)
                {
                    Store (One, PS1S)
                    Store (One, PS1E)
                    Store (One, SLPS)
                }

                Method (SWAK, 1, NotSerialized)
                {
                    Store (Zero, SLPS)
                    Store (Zero, PS1E)
                    If (LAnd (LEqual (Arg0, One), RTCS))
                    {
                        Notify (PWRB, 0x02)
                    }
                    Else
                    {
                        If (LAnd (LEqual (Arg0, 0x03), BRTC)) {}
                        Else
                        {
                            Notify (PWRB, 0x02)
                        }
                    }
                }

                OperationRegion (APMP, SystemIO, SMIP, 0x02)
                Field (APMP, ByteAcc, NoLock, Preserve)
                {
                    APMC,   8, 
                    APMS,   8
                }

                Field (APMP, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x01), 
                        ,   1, 
                    BRTC,   1
                }

                OperationRegion (PMS0, SystemIO, PMBS, 0x04)
                Field (PMS0, ByteAcc, NoLock, Preserve)
                {
                        ,   10, 
                    RTCS,   1, 
                        ,   4, 
                    WAKS,   1, 
                    Offset (0x03), 
                    PWBT,   1, 
                    Offset (0x04)
                }

                OperationRegion (SMIE, SystemIO, PM30, 0x08)
                Field (SMIE, ByteAcc, NoLock, Preserve)
                {
                        ,   4, 
                    PS1E,   1, 
                        ,   31, 
                    PS1S,   1, 
                    Offset (0x08)
                }

                Scope (\_SB)
                {
                    Name (SLPS, Zero)
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Address Range Minimum
                            0x0020,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x00A0,             // Address Range Minimum
                            0x00A0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

                Device (DMAD)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        DMA (Compatibility, BusMaster, Transfer8)
                            {4}
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x0081,             // Address Range Minimum
                            0x0081,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0087,             // Address Range Minimum
                            0x0087,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0089,             // Address Range Minimum
                            0x0089,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x008F,             // Address Range Minimum
                            0x008F,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x00C0,             // Address Range Minimum
                            0x00C0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x20,               // Address Length
                            )
                    })
                }

                Device (TMR)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Address Range Minimum
                            0x0040,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x04,               // Address Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                }

                Device (RTC0)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Address Range Minimum
                            0x0070,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                }

                Device (SPKR)
                {
                    Name (_HID, EisaId ("PNP0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0061,             // Address Range Minimum
                            0x0061,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                    })
                }

                Device (COPR)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x00F0,             // Address Range Minimum
                            0x00F0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (UAR1)
                {
                    Name (_UID, One)
                    Name (_HID, EisaId ("PNP0501"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (Zero))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (Zero, Zero)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (DCRS (Zero, Zero))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        DSRS (Arg0, Zero)
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (CMPR)
                    }

                    Name (CMPR, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16,
                                0x03F8,             // Address Range Minimum
                                0x03F8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {4}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x03F8,             // Address Range Minimum
                                0x03F8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x02F8,             // Address Range Minimum
                                0x02F8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x03E8,             // Address Range Minimum
                                0x03E8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x02E8,             // Address Range Minimum
                                0x02E8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        EndDependentFn ()
                    })
                }

                Method (UAR1._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x08, 0x04))
                }

                Device (FDC)
                {
                    Name (_HID, EisaId ("PNP0700"))
                    Method (_FDE, 0, NotSerialized)
                    {
                        Name (FDEP, Package (0x05)
                        {
                            Zero, 
                            Zero, 
                            0x02, 
                            0x02, 
                            0x02
                        })
                        If (_STA ())
                        {
                            Store (One, Index (FDEP, Zero))
                        }

                        Return (FDEP)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (0x03))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (0x03, Zero)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        DCRS (0x03, One)
                        Store (IRQM, IRQE)
                        Store (DMAM, DMAE)
                        Store (IO11, IO21)
                        Store (IO12, IO22)
                        Store (0x06, LEN2)
                        Add (IO21, 0x07, IO31)
                        Store (IO31, IO32)
                        Store (One, LEN3)
                        Return (CRS2)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        DSRS (Arg0, 0x03)
                        CreateWordField (Arg0, One, IRQE)
                        CreateByteField (Arg0, 0x04, DMAE)
                        ENFG (CGLD (0x03))
                        If (IRQE)
                        {
                            FindSetRightBit (IRQE, Local0)
                            Subtract (Local0, One, INTR)
                        }
                        Else
                        {
                            Store (Zero, INTR)
                        }

                        If (DMAE)
                        {
                            FindSetRightBit (DMAE, Local0)
                            Subtract (Local0, One, DMCH)
                        }
                        Else
                        {
                            Store (0x04, DMCH)
                        }

                        EXFG ()
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16,
                                0x03F0,             // Address Range Minimum
                                0x03F0,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x06,               // Address Length
                                )
                            IO (Decode16,
                                0x03F7,             // Address Range Minimum
                                0x03F7,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x01,               // Address Length
                                )
                            IRQNoFlags ()
                                {6}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {2}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x03F0,             // Address Range Minimum
                                0x03F0,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x06,               // Address Length
                                )
                            IO (Decode16,
                                0x03F7,             // Address Range Minimum
                                0x03F7,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x01,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x0370,             // Address Range Minimum
                                0x0370,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x06,               // Address Length
                                )
                            IO (Decode16,
                                0x0377,             // Address Range Minimum
                                0x0377,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x01,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {0,1,2,3}
                        }
                        EndDependentFn ()
                    })
                }

                Device (SIOR)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Method (_UID, 0, NotSerialized)
                    {
                        Return (SPIO)
                    }

                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0290,             // Address Range Minimum
                            0x0290,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x08,               // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        If (LAnd (LNot (LEqual (SPIO, 0x03F0)), LGreater (SPIO, 0xF0)))
                        {
                            CreateWordField (CRS, 0x02, GP10)
                            CreateWordField (CRS, 0x04, GP11)
                            CreateByteField (CRS, 0x07, GPL1)
                            Store (SPIO, GP10)
                            Store (SPIO, GP11)
                            Store (0x02, GPL1)
                        }

                        Return (CRS)
                    }
                }

                Name (DCAT, Package (0x15)
                {
                    0x02, 
                    0x03, 
                    One, 
                    Zero, 
                    0xFF, 
                    0x07, 
                    0xFF, 
                    0xFF, 
                    0x07, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0x07, 
                    0x08, 
                    0x09, 
                    0xFF, 
                    0xFF
                })
                Mutex (IOCF, 0x00)
                Method (ENFG, 1, NotSerialized)
                {
                    Acquire (IOCF, 0xFFFF)
                    Store (0x87, INDX)
                    Store (0x87, INDX)
                    Store (Arg0, LDN)
                }

                Method (EXFG, 0, NotSerialized)
                {
                    Store (0xAA, INDX)
                    Release (IOCF)
                }

                Method (LPTM, 1, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    And (OPT0, 0x02, Local0)
                    EXFG ()
                    Return (Local0)
                }

                Method (UHID, 1, NotSerialized)
                {
                    If (LEqual (Arg0, One))
                    {
                        ENFG (CGLD (Arg0))
                        And (OPT1, 0x38, Local0)
                        EXFG ()
                        If (Local0)
                        {
                            Return (0x1005D041)
                        }
                    }

                    Return (0x0105D041)
                }

                Method (SIOK, 1, NotSerialized)
                {
                    ENFG (0x0A)
                    If (LGreater (Arg0, One))
                    {
                        Or (CRE4, 0x10, CRE4)
                    }

                    Store (CRE3, Local0)
                    EXFG ()
                }

                Method (SIOS, 1, NotSerialized)
                {
                    Store ("SIOS", Debug)
                    SIOK (Arg0)
                }

                Method (SIOW, 1, NotSerialized)
                {
                    Store ("SIOW", Debug)
                    SIOK (Zero)
                }

                Method (SIOH, 0, NotSerialized)
                {
                    Store ("SIOH", Debug)
                    ENFG (0x0A)
                    If (And (OPT3, 0x10))
                    {
                        Notify (PS2K, 0x02)
                    }

                    If (And (OPT3, 0x20))
                    {
                        Notify (PS2M, 0x02)
                    }

                    EXFG ()
                    SIOK (Zero)
                }

                OperationRegion (IOID, SystemIO, SPIO, 0x02)
                Field (IOID, ByteAcc, NoLock, Preserve)
                {
                    INDX,   8, 
                    DATA,   8
                }

                IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x07), 
                    LDN,    8, 
                    Offset (0x22), 
                    FDCP,   1, 
                        ,   2, 
                    LPTP,   1, 
                    URAP,   1, 
                    URBP,   1, 
                    Offset (0x30), 
                    ACTR,   8, 
                    Offset (0x60), 
                    IOAH,   8, 
                    IOAL,   8, 
                    IOH2,   8, 
                    IOL2,   8, 
                    Offset (0x70), 
                    INTR,   4, 
                    Offset (0x74), 
                    DMCH,   3, 
                    Offset (0xE0), 
                    CRE0,   8, 
                    CRE1,   8, 
                    CRE2,   8, 
                    CRE3,   8, 
                    CRE4,   8, 
                    CRE5,   8, 
                    CRE6,   8, 
                    Offset (0xF0), 
                    OPT0,   8, 
                    OPT1,   8, 
                    OPT2,   8, 
                    OPT3,   8, 
                    Offset (0xF5), 
                    OPT5,   8, 
                    OPT6,   8, 
                    Offset (0xF9), 
                    OPT9,   8
                }

                Method (CGLD, 1, NotSerialized)
                {
                    Return (DerefOf (Index (DCAT, Arg0)))
                }

                Method (DSTA, 1, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    Store (ACTR, Local0)
                    EXFG ()
                    If (LEqual (Local0, 0xFF))
                    {
                        Return (Zero)
                    }

                    If (LEqual (Arg0, 0x05))
                    {
                        ShiftRight (Local0, 0x02, Local0)
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        ShiftRight (Local0, One, Local0)
                    }

                    And (Local0, One, Local0)
                    Or (IOST, ShiftLeft (Local0, Arg0), IOST)
                    If (Local0)
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        If (And (ShiftLeft (One, Arg0), IOST))
                        {
                            Return (0x0D)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                }

                Method (DCNT, 2, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    If (LEqual (Arg0, 0x05))
                    {
                        ShiftLeft (IOH2, 0x08, Local1)
                        Or (IOL2, Local1, Local1)
                    }
                    Else
                    {
                        ShiftLeft (IOAH, 0x08, Local1)
                        Or (IOAL, Local1, Local1)
                    }

                    RRIO (Arg0, Arg1, Local1, 0x08)
                    If (LAnd (LLess (DMCH, 0x04), LNot (LEqual (And (DMCH, 0x03, Local1), Zero))))
                    {
                        RDMA (Arg0, Arg1, Increment (Local1))
                    }

                    Store (Arg1, Local1)
                    Store (One, Local2)
                    If (LEqual (Arg0, 0x05))
                    {
                        ShiftLeft (Arg1, 0x02, Local1)
                        ShiftLeft (Local2, 0x02, Local2)
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        ShiftLeft (Arg1, One, Local1)
                        ShiftLeft (Local2, One, Local2)
                    }

                    Store (ACTR, Local0)
                    Not (Local2, Local3)
                    And (Local0, Local3, Local0)
                    Or (Local0, Local1, Local0)
                    Store (Local0, ACTR)
                    EXFG ()
                }

                Name (CRS1, ResourceTemplate ()
                {
                    IRQNoFlags ()
                        {}
                    DMA (Compatibility, NotBusMaster, Transfer8)
                        {}
                    IO (Decode16,
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x01,               // Address Alignment
                        0x00,               // Address Length
                        )
                })
                CreateWordField (CRS1, One, IRQM)
                CreateByteField (CRS1, 0x04, DMAM)
                CreateWordField (CRS1, 0x08, IO11)
                CreateWordField (CRS1, 0x0A, IO12)
                CreateByteField (CRS1, 0x0D, LEN1)
                Name (CRS2, ResourceTemplate ()
                {
                    IRQNoFlags ()
                        {6}
                    DMA (Compatibility, NotBusMaster, Transfer8)
                        {2}
                    IO (Decode16,
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x01,               // Address Alignment
                        0x00,               // Address Length
                        )
                    IO (Decode16,
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x01,               // Address Alignment
                        0x00,               // Address Length
                        )
                })
                CreateWordField (CRS2, One, IRQE)
                CreateByteField (CRS2, 0x04, DMAE)
                CreateWordField (CRS2, 0x08, IO21)
                CreateWordField (CRS2, 0x0A, IO22)
                CreateByteField (CRS2, 0x0D, LEN2)
                CreateWordField (CRS2, 0x10, IO31)
                CreateWordField (CRS2, 0x12, IO32)
                CreateByteField (CRS2, 0x15, LEN3)
                Method (DCRS, 2, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    ShiftLeft (IOAH, 0x08, IO11)
                    Or (IOAL, IO11, IO11)
                    Store (IO11, IO12)
                    Subtract (FindSetRightBit (IO11), One, Local0)
                    ShiftLeft (One, Local0, LEN1)
                    If (INTR)
                    {
                        ShiftLeft (One, INTR, IRQM)
                    }
                    Else
                    {
                        Store (Zero, IRQM)
                    }

                    If (LOr (LGreater (DMCH, 0x03), LEqual (Arg1, Zero)))
                    {
                        Store (Zero, DMAM)
                    }
                    Else
                    {
                        And (DMCH, 0x03, Local1)
                        ShiftLeft (One, Local1, DMAM)
                    }

                    EXFG ()
                    Return (CRS1)
                }

                Method (DSRS, 2, NotSerialized)
                {
                    CreateWordField (Arg0, One, IRQM)
                    CreateByteField (Arg0, 0x04, DMAM)
                    CreateWordField (Arg0, 0x08, IO11)
                    ENFG (CGLD (Arg1))
                    And (IO11, 0xFF, IOAL)
                    ShiftRight (IO11, 0x08, IOAH)
                    If (IRQM)
                    {
                        FindSetRightBit (IRQM, Local0)
                        Subtract (Local0, One, INTR)
                    }
                    Else
                    {
                        Store (Zero, INTR)
                    }

                    If (DMAM)
                    {
                        FindSetRightBit (DMAM, Local0)
                        Subtract (Local0, One, DMCH)
                    }
                    Else
                    {
                        Store (0x07, DMCH)
                    }

                    EXFG ()
                    DCNT (Arg1, One)
                }

                Device (RMSC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x10)
                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0010,             // Address Range Minimum
                            0x0010,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x0022,             // Address Range Minimum
                            0x0022,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x1E,               // Address Length
                            )
                        IO (Decode16,
                            0x0044,             // Address Range Minimum
                            0x0044,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x1C,               // Address Length
                            )
                        IO (Decode16,
                            0x0062,             // Address Range Minimum
                            0x0062,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0065,             // Address Range Minimum
                            0x0065,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x0B,               // Address Length
                            )
                        IO (Decode16,
                            0x0072,             // Address Range Minimum
                            0x0072,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x0E,               // Address Length
                            )
                        IO (Decode16,
                            0x0080,             // Address Range Minimum
                            0x0080,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0084,             // Address Range Minimum
                            0x0084,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0088,             // Address Range Minimum
                            0x0088,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x008C,             // Address Range Minimum
                            0x008C,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0090,             // Address Range Minimum
                            0x0090,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x00A2,             // Address Range Minimum
                            0x00A2,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x1E,               // Address Length
                            )
                        IO (Decode16,
                            0x00E0,             // Address Range Minimum
                            0x00E0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x04D0,             // Address Range Minimum
                            0x04D0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED1C000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED20000,         // Address Base
                            0x00070000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFF9FA000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFFF00000,         // Address Base
                            0x000FFFFF,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateWordField (CRS, 0x72, GP00)
                        CreateWordField (CRS, 0x74, GP01)
                        CreateByteField (CRS, 0x77, GP0L)
                        Store (PMBS, GP00)
                        Store (PMBS, GP01)
                        Store (PMLN, GP0L)
                        If (SMBS)
                        {
                            CreateWordField (CRS, 0x7A, GP10)
                            CreateWordField (CRS, 0x7C, GP11)
                            CreateByteField (CRS, 0x7F, GP1L)
                            Store (SMBS, GP10)
                            Store (SMBS, GP11)
                            Store (SMBL, GP1L)
                        }

                        If (GPBS)
                        {
                            CreateWordField (CRS, 0x82, GP20)
                            CreateWordField (CRS, 0x84, GP21)
                            CreateByteField (CRS, 0x87, GP2L)
                            Store (GPBS, GP20)
                            Store (GPBS, GP21)
                            Store (GPLN, GP2L)
                        }

                        Return (CRS)
                    }
                }

                Scope (\_SB.PCI0.SBRG)
                {
                    Device (ASOC)
                    {
                        Name (_HID, "ATK0110")
                        Name (_UID, 0x01010110)
                        Method (_STA, 0, NotSerialized)
                        {
                            Return (0x0F)
                        }

                        Method (_INI, 0, NotSerialized)
                        {
                            Name (_T_0, Zero)
                            Store (GNVS (0x3774), _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                Store (0xA6, Index (G3T0, 0x03))
                            }
                            Else
                            {
                                If (LEqual (_T_0, One))
                                {
                                    Store (0x21, Index (G3T0, 0x03))
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x02))
                                    {
                                        Store (0x42, Index (G3T0, 0x03))
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x03))
                                        {
                                            Store (0x64, Index (G3T0, 0x03))
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x04))
                                            {
                                                Store (0xE9, Index (G3T0, 0x03))
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x05))
                                                {
                                                    Store (Zero, Index (G3T0, 0x03))
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x06))
                                                    {
                                                        Store (0x012C, Index (G3T0, 0x03))
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            Store (Subtract (GNVS (0x66B9), 0x06), Index (G3T2, 0x03))
                        }

                        Name (MBIF, Package (0x08)
                        {
                            0x03, 
                            "P5B-V", 
                            0x01010101, 
                            0x01010101, 
                            0xE0000001, 
                            Zero, 
                            Zero, 
                            Zero
                        })
                        Name (ASBF, Buffer (0x08)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        CreateDWordField (ASBF, Zero, ASB0)
                        CreateDWordField (ASBF, 0x04, ASB1)
                        Method (GGRP, 1, Serialized)
                        {
                            Name (_T_0, Zero)
                            Store (Arg0, _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                Return (GRP0)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    Return (GRP3)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        Store (GNVS (0x1787), Local0)
                                        If (LEqual (Local0, One))
                                        {
                                            Return (GR41)
                                        }
                                        Else
                                        {
                                            Return (GR42)
                                        }
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            Return (GRP5)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                Return (GRP6)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x08))
                                                {
                                                    Return (GRP8)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x09))
                                                    {
                                                        Return (GRP9)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x0A))
                                                        {
                                                            Return (GRPA)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0B))
                                                            {
                                                                Return (GRPB)
                                                            }
                                                            Else
                                                            {
                                                                Return (Zero)
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Method (GITM, 1, Serialized)
                        {
                            CreateDWordField (Arg0, Zero, PRM0)
                            CreateByteField (Arg0, 0x03, GPID)
                            Store (One, ASB0)
                            Name (_T_0, Zero)
                            Store (GPID, _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                GIT0 (PRM0)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    GIT3 (PRM0)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        GIT4 (PRM0)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            GIT5 (PRM0)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                GIT6 (PRM0)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x08))
                                                {
                                                    GIT8 (PRM0)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x09))
                                                    {
                                                        GIT9 (PRM0)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x0A))
                                                        {
                                                            GITA (PRM0)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0B))
                                                            {
                                                                GITB (PRM0)
                                                            }
                                                            Else
                                                            {
                                                                Store (Zero, ASB0)
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            Return (ASBF)
                        }

                        Method (SITM, 1, Serialized)
                        {
                            CreateDWordField (Arg0, Zero, PRM0)
                            CreateDWordField (Arg0, 0x04, PRM1)
                            CreateDWordField (Arg0, 0x08, PRM2)
                            CreateByteField (Arg0, 0x03, GPID)
                            Store (One, ASB0)
                            Name (_T_0, Zero)
                            Store (GPID, _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                SIT0 (PRM0, PRM1, PRM2)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    SIT3 (PRM0, PRM1, PRM2)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        SIT4 (PRM0, PRM1, PRM2)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            SIT5 (PRM0, PRM1, PRM2)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                SIT6 (PRM0, PRM1, PRM2)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x08))
                                                {
                                                    SIT8 (PRM0, PRM1, PRM2)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x09))
                                                    {
                                                        SIT9 (PRM0, PRM1, PRM2)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x0A))
                                                        {
                                                            SITA (PRM0, PRM1, PRM2)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0B))
                                                            {
                                                                SITB (PRM0, PRM1, PRM2)
                                                            }
                                                            Else
                                                            {
                                                                Store (Zero, ASB0)
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            Return (ASBF)
                        }

                        Method (OP2V, 2, NotSerialized)
                        {
                            Store (DerefOf (Index (Arg1, 0x04)), Local0)
                            Store (DerefOf (Index (Arg1, 0x05)), Local1)
                            Multiply (Arg0, Local1, Local1)
                            Add (Local0, Local1, Local0)
                            Return (Local0)
                        }

                        Method (V2OP, 2, NotSerialized)
                        {
                            Store (DerefOf (Index (Arg1, 0x04)), Local0)
                            Store (DerefOf (Index (Arg1, 0x05)), Local1)
                            Subtract (Arg0, Local0, Local0)
                            Divide (Local0, Local1, Local1, Local0)
                            Return (Local0)
                        }
                    }
                }

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103"))
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00000400,         // Address Length
                            )
                    })
                    OperationRegion (HPTC, SystemMemory, HTBA, 0x04)
                    Field (HPTC, ByteAcc, NoLock, Preserve)
                    {
                        HPTS,   2, 
                            ,   5, 
                        HPTE,   1, 
                        Offset (0x04)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        If (LEqual (OSFL (), Zero))
                        {
                            If (HPTE)
                            {
                                Return (0x0F)
                            }
                        }
                        Else
                        {
                            If (HPTE)
                            {
                                Return (0x0B)
                            }
                        }

                        Return (Zero)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x04, HPT)
                        Multiply (HPTS, 0x1000, Local0)
                        Add (Local0, 0xFED00000, HPT)
                        Return (CRS)
                    }
                }

                OperationRegion (RX80, PCI_Config, Zero, 0xFF)
                Field (RX80, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x80), 
                    LPCD,   16, 
                    LPCE,   16
                }

                Name (DBPT, Package (0x04)
                {
                    Package (0x08)
                    {
                        0x03F8, 
                        0x02F8, 
                        0x0220, 
                        0x0228, 
                        0x0238, 
                        0x02E8, 
                        0x0338, 
                        0x03E8
                    }, 

                    Package (0x08)
                    {
                        0x03F8, 
                        0x02F8, 
                        0x0220, 
                        0x0228, 
                        0x0238, 
                        0x02E8, 
                        0x0338, 
                        0x03E8
                    }, 

                    Package (0x03)
                    {
                        0x0378, 
                        0x0278, 
                        0x03BC
                    }, 

                    Package (0x02)
                    {
                        0x03F0, 
                        0x0370
                    }
                })
                Name (DDLT, Package (0x04)
                {
                    Package (0x02)
                    {
                        Zero, 
                        0xFFF8
                    }, 

                    Package (0x02)
                    {
                        0x04, 
                        0xFF8F
                    }, 

                    Package (0x02)
                    {
                        0x08, 
                        0xFCFF
                    }, 

                    Package (0x02)
                    {
                        0x0C, 
                        0xEFFF
                    }
                })
                Method (RRIO, 4, NotSerialized)
                {
                    If (LAnd (LNot (LGreater (Arg0, 0x03)), LNot (LLess (Arg0, Zero))))
                    {
                        Store (Match (DerefOf (Index (DBPT, Arg0)), MEQ, Arg2, MTR, Zero, Zero), Local0)
                        If (LNot (LEqual (Local0, Ones)))
                        {
                            Store (DerefOf (Index (DerefOf (Index (DDLT, Arg0)), Zero)), Local1)
                            Store (DerefOf (Index (DerefOf (Index (DDLT, Arg0)), One)), Local2)
                            ShiftLeft (Local0, Local1, Local0)
                            And (LPCD, Local2, LPCD)
                            Or (LPCD, Local0, LPCD)
                            WX82 (Arg0, Arg1)
                        }
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        If (LEqual (Arg2, 0x0200))
                        {
                            WX82 (0x08, Arg0)
                        }
                        Else
                        {
                            If (LEqual (Arg2, 0x0208))
                            {
                                WX82 (0x09, Arg0)
                            }
                        }
                    }

                    If (LAnd (LNot (LGreater (Arg0, 0x0D)), LNot (LLess (Arg0, 0x0A))))
                    {
                        WX82 (Arg0, Arg1)
                    }
                }

                Method (WX82, 2, NotSerialized)
                {
                    ShiftLeft (One, Arg0, Local0)
                    If (Arg1)
                    {
                        Or (LPCE, Local0, LPCE)
                    }
                    Else
                    {
                        Not (Local0, Local0)
                        And (LPCE, Local0, LPCE)
                    }
                }

                Method (RDMA, 3, NotSerialized)
                {
                }

                Scope (\)
                {
                    OperationRegion (RAMW, SystemMemory, Subtract (TOPM, 0x00010000), 0x00010000)
                    Field (RAMW, ByteAcc, NoLock, Preserve)
                    {
                        PAR0,   32, 
                        PAR1,   32
                    }

                    OperationRegion (IOB2, SystemIO, 0xB2, 0x02)
                    Field (IOB2, ByteAcc, NoLock, Preserve)
                    {
                        SMIC,   8, 
                        SMIS,   8
                    }

                    Method (ISMI, 1, Serialized)
                    {
                        Store (Arg0, SMIC)
                    }

                    Method (GNVS, 1, Serialized)
                    {
                        Store (Arg0, PAR0)
                        ISMI (0x70)
                        Return (PAR1)
                    }

                    Method (SNVS, 2, Serialized)
                    {
                        Store (Arg0, PAR0)
                        Store (Arg1, PAR1)
                        ISMI (0x71)
                    }
                }

                Scope (ASOC)
                {
                    Name (ALAE, Package (0x04)
                    {
                        0x0A070001, 
                        "Music Alarm", 
                        Zero, 
                        Zero
                    })
                    Name (ALSU, Package (0x04)
                    {
                        0x0A070002, 
                        "Sunday", 
                        Zero, 
                        One
                    })
                    Name (ALMO, Package (0x04)
                    {
                        0x0A070003, 
                        "Monday", 
                        Zero, 
                        One
                    })
                    Name (ALTU, Package (0x04)
                    {
                        0x0A070004, 
                        "Tuesday", 
                        Zero, 
                        One
                    })
                    Name (ALWE, Package (0x04)
                    {
                        0x0A070005, 
                        "Wednesday", 
                        Zero, 
                        One
                    })
                    Name (ALTH, Package (0x04)
                    {
                        0x0A070006, 
                        "Thursday", 
                        Zero, 
                        One
                    })
                    Name (ALFR, Package (0x04)
                    {
                        0x0A070007, 
                        "Friday", 
                        Zero, 
                        One
                    })
                    Name (ALSA, Package (0x04)
                    {
                        0x0A070008, 
                        "Saturday", 
                        Zero, 
                        One
                    })
                    Name (ALAH, Package (0x07)
                    {
                        0x0A060009, 
                        "Alarm Hour", 
                        Zero, 
                        0x0C, 
                        Zero, 
                        One, 
                        0x18
                    })
                    Name (ALAM, Package (0x07)
                    {
                        0x0A06000A, 
                        "Alarm Mins", 
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        0x3C
                    })
                    Name (ALAC, Package (0x0A)
                    {
                        0x0A08000B, 
                        "Music Alarm Drive", 
                        Zero, 
                        0x03, 
                        0x05, 
                        "Primary IDE Master", 
                        "Primary IDE Slave", 
                        "Secondary IDE Master", 
                        "Secondary IDE Slave", 
                        "JMicron JMB363 IDE"
                    })
                    Name (ALAT, Package (0x07)
                    {
                        0x0A06000C, 
                        "Starting Track", 
                        Zero, 
                        0x10, 
                        Zero, 
                        One, 
                        0x20
                    })
                    Name (ALAR, Package (0x08)
                    {
                        0x0A08000D, 
                        "Repeat", 
                        Zero, 
                        Zero, 
                        0x03, 
                        "none", 
                        "Single", 
                        "All"
                    })
                    Name (ALAL, Package (0x09)
                    {
                        0x0A08000E, 
                        "Length", 
                        Zero, 
                        Zero, 
                        0x04, 
                        "10 mins", 
                        "20 mins", 
                        "30 mins", 
                        "1 hour"
                    })
                    Name (ALAV, Package (0x07)
                    {
                        0x0A06000F, 
                        "Volume", 
                        Zero, 
                        0x0F, 
                        Zero, 
                        One, 
                        0x20
                    })
                    Name (GRPA, Package (0x0F)
                    {
                        ALAE, 
                        ALSU, 
                        ALMO, 
                        ALTU, 
                        ALWE, 
                        ALTH, 
                        ALFR, 
                        ALSA, 
                        ALAH, 
                        ALAM, 
                        ALAC, 
                        ALAT, 
                        ALAR, 
                        ALAL, 
                        ALAV
                    })
                    Method (GITA, 1, NotSerialized)
                    {
                        Store (And (Arg0, 0xFF), Local0)
                        Name (_T_0, Zero)
                        Store (Local0, _T_0)
                        If (LEqual (_T_0, One))
                        {
                            Store (GNVS (0x16EE), ASB1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x02))
                            {
                                Store (GNVS (0x16EF), ASB1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    Store (GNVS (0x16F0), ASB1)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        Store (GNVS (0x16F1), ASB1)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            Store (GNVS (0x16F2), ASB1)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                Store (GNVS (0x16F3), ASB1)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x07))
                                                {
                                                    Store (GNVS (0x16F4), ASB1)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x08))
                                                    {
                                                        Store (GNVS (0x16F5), ASB1)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x09))
                                                        {
                                                            Store (GNVS (0x5368), ASB1)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0A))
                                                            {
                                                                Store (GNVS (0x6338), ASB1)
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x0B))
                                                                {
                                                                    Store (GNVS (0x3445), ASB1)
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x0C))
                                                                    {
                                                                        Store (GNVS (0x5360), ASB1)
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0x0D))
                                                                        {
                                                                            Store (GNVS (0x256A), ASB1)
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0x0E))
                                                                            {
                                                                                Store (GNVS (0x256C), ASB1)
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0x0F))
                                                                                {
                                                                                    Store (GNVS (0x5378), ASB1)
                                                                                }
                                                                                Else
                                                                                {
                                                                                    Store (Zero, ASB0)
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    Method (SITA, 3, NotSerialized)
                    {
                        Store (And (Arg0, 0xFF), Local0)
                        Name (_T_0, Zero)
                        Store (Local0, _T_0)
                        If (LEqual (_T_0, One))
                        {
                            SNVS (0x16EE, Arg1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x02))
                            {
                                SNVS (0x16EF, Arg1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    SNVS (0x16F0, Arg1)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        SNVS (0x16F1, Arg1)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            SNVS (0x16F2, Arg1)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                SNVS (0x16F3, Arg1)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x07))
                                                {
                                                    SNVS (0x16F4, Arg1)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x08))
                                                    {
                                                        SNVS (0x16F5, Arg1)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x09))
                                                        {
                                                            SNVS (0x5368, Arg1)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0A))
                                                            {
                                                                SNVS (0x6338, Arg1)
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x0B))
                                                                {
                                                                    SNVS (0x3445, Arg1)
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x0C))
                                                                    {
                                                                        SNVS (0x5360, Arg1)
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0x0D))
                                                                        {
                                                                            SNVS (0x256A, Arg1)
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0x0E))
                                                                            {
                                                                                SNVS (0x256C, Arg1)
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0x0F))
                                                                                {
                                                                                    SNVS (0x5378, Arg1)
                                                                                }
                                                                                Else
                                                                                {
                                                                                    Store (Zero, ASB0)
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                Device (^PCIE)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x11)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xE0000000,         // Address Base
                            0x10000000,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x04, BAS1)
                        CreateDWordField (CRS, 0x08, LEN1)
                        Store (PCIB, BAS1)
                        Store (PCIL, LEN1)
                        Return (CRS)
                    }
                }

                Scope (\_GPE)
                {
                    Method (_L1C, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.SBRG.ASOC, One)
                        Sleep (0x03E8)
                    }
                }

                Scope (ASOC)
                {
                    Name (VESL, Zero)
                    Method (SPLV, 1, Serialized)
                    {
                        And (Arg0, 0xFFFF, VESL)
                        Store (VESL, PAR0)
                        ISMI (0x88)
                        Store (And (PAR0, 0xFFFF), Local0)
                        Return (Local0)
                    }

                    Method (GPLV, 0, Serialized)
                    {
                        Return (VESL)
                    }
                }

                Device (OMSC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, Zero)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        If (APIC)
                        {
                            CreateDWordField (CRS, 0x08, ML01)
                            CreateDWordField (CRS, 0x04, MB01)
                            CreateDWordField (CRS, 0x14, ML02)
                            CreateDWordField (CRS, 0x10, MB02)
                            Store (0xFEC00000, MB01)
                            Store (0x1000, ML01)
                            Store (0xFEE00000, MB02)
                            Store (0x1000, ML02)
                        }

                        Return (CRS)
                    }
                }

                Device (^^RMEM)
                {
                    Name (_HID, EisaId ("PNP0C01"))
                    Name (_UID, One)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite,
                            0x00000000,         // Address Base
                            0x000A0000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x000E0000,         // Address Base
                            0x00020000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0x00100000,         // Address Base
                            0x00000000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x10, BAS1)
                        CreateDWordField (CRS, 0x14, LEN1)
                        CreateDWordField (CRS, 0x1C, BAS2)
                        CreateDWordField (CRS, 0x20, LEN2)
                        CreateDWordField (CRS, 0x2C, LEN3)
                        CreateDWordField (CRS, 0x34, BAS4)
                        CreateDWordField (CRS, 0x38, LEN4)
                        If (OSFL ()) {}
                        Else
                        {
                            If (MG1B)
                            {
                                If (LGreater (MG1B, 0x000C0000))
                                {
                                    Store (0x000C0000, BAS1)
                                    Subtract (MG1B, BAS1, LEN1)
                                }
                            }
                            Else
                            {
                                Store (0x000C0000, BAS1)
                                Store (0x00020000, LEN1)
                            }

                            If (Add (MG1B, MG1L, Local0))
                            {
                                Store (Local0, BAS2)
                                Subtract (0x00100000, BAS2, LEN2)
                            }
                        }

                        Subtract (MG2B, 0x00100000, LEN3)
                        Add (MG2B, MG2L, BAS4)
                        Subtract (Zero, BAS4, LEN4)
                        Return (CRS)
                    }
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CID, 0x0B03D041)
                    Method (_STA, 0, NotSerialized)
                    {
                        ShiftLeft (One, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (Zero)
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Address Range Minimum
                            0x0060,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0064,             // Address Range Minimum
                            0x0064,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IRQNoFlags ()
                            {1}
                    })
                }

                Method (PS2K._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x1F, 0x04))
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F03"))
                    Name (_CID, 0x130FD041)
                    Method (_STA, 0, NotSerialized)
                    {
                        ShiftLeft (One, 0x0C, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (Zero)
                    }

                    Name (CRS1, ResourceTemplate ()
                    {
                        IRQNoFlags ()
                            {12}
                    })
                    Name (CRS2, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Address Range Minimum
                            0x0060,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0064,             // Address Range Minimum
                            0x0064,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IRQNoFlags ()
                            {12}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        ShiftLeft (One, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (CRS1)
                        }
                        Else
                        {
                            Return (CRS2)
                        }
                    }
                }

                Method (PS2M._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x1D, 0x04))
                }
            }

            Device (SATA)
            {
                Name (_ADR, 0x001F0002)
                Name (^NATA, Package (0x01)
                {
                    0x001F0002
                })
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

                    Package (0x04)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                    Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                    Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                    Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                    Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                    Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                    Offset (0x0C), 
                    Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)
                    Method (_GTM, 0, NotSerialized)
                    {
                        FZHD ()
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (PMUT, GMUT)
                        Store (PMCR, GMCR)
                        Store (PSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (PSUT, GSUT)
                        Store (PSCR, GSCR)
                        STM ()
                        Store (GMPT, PMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT)
                        Store (GMCR, PMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT)
                        Store (GSCR, PSCR)
                        If (And (Local0, One))
                        {
                            Store (One, PM3E)
                        }
                        Else
                        {
                            Store (Zero, PM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E)
                        }
                        Else
                        {
                            Store (Zero, PM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE)
                        }
                        Else
                        {
                            Store (Zero, PMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E)
                        }
                        Else
                        {
                            Store (Zero, PS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E)
                        }
                        Else
                        {
                            Store (Zero, PS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE)
                        }
                        Else
                        {
                            Store (Zero, PSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA0)
                        Store (GTF (One, Arg2), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)
                    Method (_GTM, 0, NotSerialized)
                    {
                        FZHD ()
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (SMUT, GMUT)
                        Store (SMCR, GMCR)
                        Store (SSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (SSUT, GSUT)
                        Store (SSCR, GSCR)
                        STM ()
                        Store (GMPT, SMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT)
                        Store (GMCR, SMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT)
                        Store (GSCR, SSCR)
                        If (And (Local0, One))
                        {
                            Store (One, SM3E)
                        }
                        Else
                        {
                            Store (Zero, SM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E)
                        }
                        Else
                        {
                            Store (Zero, SM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE)
                        }
                        Else
                        {
                            Store (Zero, SMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E)
                        }
                        Else
                        {
                            Store (Zero, SS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E)
                        }
                        Else
                        {
                            Store (Zero, SS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE)
                        }
                        Else
                        {
                            Store (Zero, SSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA2)
                        Store (GTF (One, Arg2), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (0x10, CHNF)
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA0)
                        Or (CHNF, One, CHNF)
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Store (TMD0, Debug)
                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE)
                        Store (Zero, GMUT)
                        Store (Zero, GSUE)
                        Store (Zero, GSUT)
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GMUT)
                            Or (GMUE, One, GMUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE)
                                Or (GMUE, 0x04, GMUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                            {
                                If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                                {
                                    Store (DMA0, PIO0)
                                    Or (GMUE, 0x80, GMUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GSUT)
                            Or (GSUE, One, GSUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE)
                                Or (GSUE, 0x04, GSUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                            {
                                If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                                {
                                    Store (DMA1, PIO1)
                                    Or (GSUE, 0x80, GSUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE)
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), Local1)
                        Store (Local1, GMPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), Local1)
                        Store (Local1, GSPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE)
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT02, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90
                })
                Name (AT03, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6
                })
                Name (AT04, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX)
                    Store (Arg1, A001)
                    Store (Arg2, A005)
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC)
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49)
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53)
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63)
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59)
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88)
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY)
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT)
                        }
                        Else
                        {
                            Store (PIO0, PIOT)
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT)
                            }
                            Else
                            {
                                Store (DMA0, DMAT)
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY)
                        Store (PIO0, PIOT)
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT)
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00)), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, Zero, Zero), Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    Else
                    {
                        If (LAnd (And (ID63, 0xFF00), PIOT))
                        {
                            And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x03, Local0)
                            Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0)), Local1)
                            GTFB (AT01, Local1, Local7)
                        }
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    Else
                    {
                        If (And (ID49, 0x0400))
                        {
                            GTFB (AT01, One, Local7)
                        }
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB)
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (RETB)
                }
            }

            Device (SAT1)
            {
                Name (_ADR, 0x001F0005)
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

                    Package (0x04)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                    Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                    Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                    Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                    Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                    Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                    Offset (0x0C), 
                    Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (PMUT, GMUT)
                        Store (PMCR, GMCR)
                        Store (PSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (PSUT, GSUT)
                        Store (PSCR, GSCR)
                        STM ()
                        Store (GMPT, PMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT)
                        Store (GMCR, PMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT)
                        Store (GSCR, PSCR)
                        If (And (Local0, One))
                        {
                            Store (One, PM3E)
                        }
                        Else
                        {
                            Store (Zero, PM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E)
                        }
                        Else
                        {
                            Store (Zero, PM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE)
                        }
                        Else
                        {
                            Store (Zero, PMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E)
                        }
                        Else
                        {
                            Store (Zero, PS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E)
                        }
                        Else
                        {
                            Store (Zero, PS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE)
                        }
                        Else
                        {
                            Store (Zero, PSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA0)
                        Store (GTF (One, Arg2), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (SMUT, GMUT)
                        Store (SMCR, GMCR)
                        Store (SSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (SSUT, GSUT)
                        Store (SSCR, GSCR)
                        STM ()
                        Store (GMPT, SMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT)
                        Store (GMCR, SMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT)
                        Store (GSCR, SSCR)
                        If (And (Local0, One))
                        {
                            Store (One, SM3E)
                        }
                        Else
                        {
                            Store (Zero, SM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E)
                        }
                        Else
                        {
                            Store (Zero, SM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE)
                        }
                        Else
                        {
                            Store (Zero, SMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E)
                        }
                        Else
                        {
                            Store (Zero, SS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E)
                        }
                        Else
                        {
                            Store (Zero, SS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE)
                        }
                        Else
                        {
                            Store (Zero, SSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA2)
                        Store (GTF (One, Arg2), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (0x10, CHNF)
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA0)
                        Or (CHNF, One, CHNF)
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Store (TMD0, Debug)
                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE)
                        Store (Zero, GMUT)
                        Store (Zero, GSUE)
                        Store (Zero, GSUT)
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GMUT)
                            Or (GMUE, One, GMUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE)
                                Or (GMUE, 0x04, GMUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                            {
                                If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                                {
                                    Store (DMA0, PIO0)
                                    Or (GMUE, 0x80, GMUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GSUT)
                            Or (GSUE, One, GSUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE)
                                Or (GSUE, 0x04, GSUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                            {
                                If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                                {
                                    Store (DMA1, PIO1)
                                    Or (GSUE, 0x80, GSUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE)
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), Local1)
                        Store (Local1, GMPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), Local1)
                        Store (Local1, GSPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE)
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT02, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90
                })
                Name (AT03, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6
                })
                Name (AT04, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX)
                    Store (Arg1, A001)
                    Store (Arg2, A005)
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC)
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49)
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53)
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63)
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59)
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88)
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY)
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT)
                        }
                        Else
                        {
                            Store (PIO0, PIOT)
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT)
                            }
                            Else
                            {
                                Store (DMA0, DMAT)
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY)
                        Store (PIO0, PIOT)
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT)
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00)), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, Zero, Zero), Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    Else
                    {
                        If (LAnd (And (ID63, 0xFF00), PIOT))
                        {
                            And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x03, Local0)
                            Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0)), Local1)
                            GTFB (AT01, Local1, Local7)
                        }
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    Else
                    {
                        If (And (ID49, 0x0400))
                        {
                            GTFB (AT01, One, Local7)
                        }
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB)
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (RETB)
                }
            }

            Device (EUSB)
            {
                Name (_ADR, 0x001D0007)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }

            Device (USBE)
            {
                Name (_ADR, 0x001A0007)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }

            Device (P0P5)
            {
                Name (_ADR, 0x001C0001)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR05)
                    }

                    Return (PR05)
                }
            }

            Device (P0P6)
            {
                Name (_ADR, 0x001C0002)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR06)
                    }

                    Return (PR06)
                }
            }

            Device (P0P7)
            {
                Name (_ADR, 0x001C0003)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR07)
                    }

                    Return (PR07)
                }
            }

            Device (P0P8)
            {
                Name (_ADR, 0x001C0004)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR08)
                    }

                    Return (PR08)
                }

                Device (JMF0)
                {
                    Name (_ADR, Zero)
                    Name (PIOT, Package (0x05)
                    {
                        0x0258, 
                        0x0186, 
                        0x014A, 
                        0xB4, 
                        0x78
                    })
                    Name (UDMA, Package (0x07)
                    {
                        0x78, 
                        0x50, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14, 
                        0x0F
                    })
                    Name (MDMA, Package (0x03)
                    {
                        0x01E0, 
                        0x96, 
                        0x78
                    })
                    OperationRegion (CF40, PCI_Config, 0x40, 0x04)
                    Field (CF40, ByteAcc, NoLock, Preserve)
                    {
                            ,   3, 
                        CAB0,   1, 
                            ,   18, 
                        SWAP,   1, 
                        CHN0,   1, 
                        Offset (0x04)
                    }

                    OperationRegion (CF80, PCI_Config, 0x80, 0x04)
                    Field (CF80, ByteAcc, NoLock, Preserve)
                    {
                            ,   19, 
                        CAB1,   1, 
                        Offset (0x03), 
                        CHN1,   1, 
                        Offset (0x04)
                    }

                    Name (IDEB, Buffer (0x14) {})
                    CreateDWordField (IDEB, Zero, GTM0)
                    CreateDWordField (IDEB, 0x04, GTM1)
                    CreateDWordField (IDEB, 0x08, GTM2)
                    CreateDWordField (IDEB, 0x0C, GTM3)
                    CreateDWordField (IDEB, 0x10, GTM4)
                    Name (PMIO, 0x04)
                    Name (PMDM, 0x06)
                    Name (PSIO, 0x04)
                    Name (PSDM, 0x06)
                    Name (SMIO, 0x04)
                    Name (SMDM, 0x06)
                    Name (SSIO, 0x04)
                    Name (SSDM, 0x06)
                    Name (MODP, 0x05)
                    Name (MODS, 0x05)
                    Device (SDE0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, PMIO)), Local0)
                            Store (DerefOf (Index (PIOT, PSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODP, One))
                            {
                                Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                If (LGreater (PMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PMDM)), Local1)
                            }

                            If (LAnd (MODP, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                If (LGreater (PSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), PMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), PSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                            }

                            Store (Local4, MODP)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PMDM, DMAM)
                                If (LAnd (MODP, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PSDM, DMAM)
                                If (LAnd (MODP, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }

                    Device (SDE1)
                    {
                        Name (_ADR, One)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, SMIO)), Local0)
                            Store (DerefOf (Index (PIOT, SSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODS, One))
                            {
                                Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                If (LGreater (SMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SMDM)), Local1)
                            }

                            If (LAnd (MODS, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                If (LGreater (SSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), SMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), SSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                            }

                            Store (Local4, MODS)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SMDM, DMAM)
                                If (LAnd (MODS, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SSDM, DMAM)
                                If (LAnd (MODS, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }
                }

                Device (JMF1)
                {
                    Name (_ADR, One)
                    Name (PIOT, Package (0x05)
                    {
                        0x0258, 
                        0x0186, 
                        0x014A, 
                        0xB4, 
                        0x78
                    })
                    Name (UDMA, Package (0x07)
                    {
                        0x78, 
                        0x50, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14, 
                        0x0F
                    })
                    Name (MDMA, Package (0x03)
                    {
                        0x01E0, 
                        0x96, 
                        0x78
                    })
                    OperationRegion (CF40, PCI_Config, 0x40, 0x04)
                    Field (CF40, ByteAcc, NoLock, Preserve)
                    {
                            ,   3, 
                        CAB0,   1, 
                            ,   18, 
                        SWAP,   1, 
                        CHN0,   1, 
                        Offset (0x04)
                    }

                    OperationRegion (CF80, PCI_Config, 0x80, 0x04)
                    Field (CF80, ByteAcc, NoLock, Preserve)
                    {
                            ,   19, 
                        CAB1,   1, 
                        Offset (0x03), 
                        CHN1,   1, 
                        Offset (0x04)
                    }

                    Name (IDEB, Buffer (0x14) {})
                    CreateDWordField (IDEB, Zero, GTM0)
                    CreateDWordField (IDEB, 0x04, GTM1)
                    CreateDWordField (IDEB, 0x08, GTM2)
                    CreateDWordField (IDEB, 0x0C, GTM3)
                    CreateDWordField (IDEB, 0x10, GTM4)
                    Name (PMIO, 0x04)
                    Name (PMDM, 0x06)
                    Name (PSIO, 0x04)
                    Name (PSDM, 0x06)
                    Name (SMIO, 0x04)
                    Name (SMDM, 0x06)
                    Name (SSIO, 0x04)
                    Name (SSDM, 0x06)
                    Name (MODP, 0x05)
                    Name (MODS, 0x05)
                    Device (SDE0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, PMIO)), Local0)
                            Store (DerefOf (Index (PIOT, PSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODP, One))
                            {
                                Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                If (LGreater (PMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PMDM)), Local1)
                            }

                            If (LAnd (MODP, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                If (LGreater (PSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), PMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), PSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                            }

                            Store (Local4, MODP)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PMDM, DMAM)
                                If (LAnd (MODP, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PSDM, DMAM)
                                If (LAnd (MODP, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }

                    Device (SDE1)
                    {
                        Name (_ADR, One)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, SMIO)), Local0)
                            Store (DerefOf (Index (PIOT, SSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODS, One))
                            {
                                Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                If (LGreater (SMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SMDM)), Local1)
                            }

                            If (LAnd (MODS, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                If (LGreater (SSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), SMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), SSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                            }

                            Store (Local4, MODS)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SMDM, DMAM)
                                If (LAnd (MODS, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SSDM, DMAM)
                                If (LAnd (MODS, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }
                }
            }

            Device (P0P9)
            {
                Name (_ADR, 0x001C0005)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR09)
                    }

                    Return (PR09)
                }
            }

            Device (USB0)
            {
                Name (_ADR, 0x001D0000)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x03, 0x04))
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x001D0001)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x04, 0x04))
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001D0002)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0C, 0x04))
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x001D0003)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0E, 0x04))
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x001A0000)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0E, 0x04))
                }
            }

            Device (USB5)
            {
                Name (_ADR, 0x001A0001)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x05, 0x04))
                }
            }

            Device (P0P4)
            {
                Name (_ADR, 0x001C0000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR04)
                    }

                    Return (PR04)
                }
            }
        }

        Scope (\_GPE)
        {
            Method (_L09, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.P0P2, 0x02)
                Notify (\_SB.PCI0.P0P5, 0x02)
                Notify (\_SB.PCI0.P0P6, 0x02)
                Notify (\_SB.PCI0.P0P7, 0x02)
                Notify (\_SB.PCI0.P0P8, 0x02)
                Notify (\_SB.PCI0.P0P9, 0x02)
                Notify (\_SB.PCI0.P0P4, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L0B, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.P0P1, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L08, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.SIOH ()
            }

            Method (_L1F, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.SIOH ()
            }

            Method (_L1D, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.SIOH ()
            }

            Method (_L0D, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.EUSB, 0x02)
                Notify (\_SB.PCI0.USBE, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L03, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB0, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L04, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB1, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L0C, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB2, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L0E, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB3, 0x02)
                Notify (\_SB.PCI0.USB4, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L05, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB5, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }
        }

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Name (_UID, 0xAA)
            Name (_STA, 0x0B)
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G0T0, Package (0x07)
        {
            0x00060000, 
            "AP version", 
            0x40000000, 
            Zero, 
            Zero, 
            One, 
            0x02
        })
        Name (G0T1, Package (0x07)
        {
            0x00060001, 
            "Feature flag", 
            0x40000000, 
            Zero, 
            Zero, 
            One, 
            0x04
        })
        Name (GRP0, Package (0x02)
        {
            G0T0, 
            G0T1
        })
        Method (GIT0, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (Zero, ASB1)
            }
            Else
            {
                If (LEqual (_T_0, One))
                {
                    Store (One, ASB1)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }

        Method (SIT0, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (0x0300, DBG8)
            }
            Else
            {
                If (LEqual (_T_0, One))
                {
                    Store (0x0301, DBG8)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G3T0, Package (0x07)
        {
            0x03010011, 
            "CPU frequency", 
            Zero, 
            Zero, 
            0x2710, 
            0x64, 
            0x012D
        })
        Name (G3T2, Package (0x07)
        {
            0x03060013, 
            "CPU ratio", 
            Zero, 
            Zero, 
            0x06, 
            One, 
            0x14
        })
        Name (G321, Package (0x09)
        {
            0x03820032, 
            "DRAM voltage", 
            Zero, 
            Zero, 
            0x0708, 
            0x32, 
            0x0D, 
            One, 
            "Auto"
        })
        Name (G322, Package (0x0C)
        {
            0x03080031, 
            "DRAM frequency", 
            Zero, 
            Zero, 
            0x07, 
            "Auto", 
            Zero, 
            "533 MHz", 
            "667 MHz", 
            "800 MHz", 
            "889 MHz", 
            "1067 MHz"
        })
        Name (G340, Package (0x09)
        {
            0x03810051, 
            "PCI Express frequency", 
            Zero, 
            Zero, 
            0x2328, 
            0x64, 
            0x3D, 
            One, 
            "Auto"
        })
        Name (GRP3, Package (0x05)
        {
            G3T0, 
            G3T2, 
            G321, 
            G322, 
            G340
        })
        Method (GIT3, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Subtract (GNVS (0x02C0), 0x64, ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x13))
                {
                    Subtract (GNVS (0x8298), 0x06, ASB1)
                }
                Else
                {
                    If (LEqual (_T_0, 0x32))
                    {
                        Store (GNVS (0x4438), ASB1)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x31))
                        {
                            Store (GNVS (0x3480), ASB1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x51))
                            {
                                Store (GNVS (0x62D0), ASB1)
                            }
                            Else
                            {
                                Store (Zero, ASB0)
                            }
                        }
                    }
                }
            }
        }

        Method (SIT3, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Add (Arg1, 0x64, Local2)
                If (LNot (LEqual (GNVS (0x02C0), Local2)))
                {
                    CreateByteField (CLKR, 0x04, CB04)
                    CreateWordField (CLKR, 0x0E, CBMN)
                    Store (RBLK (0xD2, Zero, 0x13), CLKR)
                    Multiply (Arg1, 0x03, Local0)
                    CreateByteField (MNBF, Local0, MN04)
                    CreateWordField (MNBF, Increment (Local0), MNVL)
                    If (LEqual (CB04, MN04))
                    {
                        If (And (Arg2, One))
                        {
                            Store (MNVL, CBMN)
                            WBLK (0xD2, Zero, 0x13, CLKR)
                        }
                    }
                    Else
                    {
                        Or (ASB0, 0x02, ASB0)
                    }

                    If (And (Arg2, One))
                    {
                        SNVS (0x02C0, Local2)
                    }
                }
            }
            Else
            {
                If (LEqual (_T_0, 0x13))
                {
                    If (LNot (LEqual (GNVS (0x8298), Add (Arg1, 0x06, Arg1))))
                    {
                        If (And (Arg2, One))
                        {
                            SNVS (0x8298, Arg1)
                        }

                        Or (ASB0, 0x02, ASB0)
                    }
                }
                Else
                {
                    If (LEqual (_T_0, 0x32))
                    {
                        If (LNot (LEqual (GNVS (0x4438), Arg1)))
                        {
                            If (LEqual (Arg1, Zero))
                            {
                                Or (ASB0, 0x02, ASB0)
                            }
                            Else
                            {
                                If (And (Arg2, One))
                                {
                                    ENFG (0x0A)
                                    And (CRE5, 0xE1, Local1)
                                    ShiftLeft (Subtract (Arg1, One), One, Local2)
                                    Or (Local1, Local2, CRE5)
                                    EXFG ()
                                }
                            }

                            If (And (Arg2, One))
                            {
                                SNVS (0x4438, Arg1)
                            }
                        }
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x31))
                        {
                            If (LNot (LEqual (GNVS (0x3480), Arg1)))
                            {
                                If (And (Arg2, One))
                                {
                                    SNVS (0x3480, Arg1)
                                }

                                Or (ASB0, 0x02, ASB0)
                            }
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x51))
                            {
                                If (LNot (LEqual (GNVS (0x62D0), Arg1)))
                                {
                                    CreateByteField (CLKR, 0x10, CB16)
                                    Store (RBLK (0xD2, Zero, 0x13), CLKR)
                                    CreateByteField (PCEF, Arg1, PC16)
                                    If (LEqual (CB16, PC16))
                                    {
                                        If (And (Arg2, One))
                                        {
                                            Store (PC16, CB16)
                                            WBLK (0xD2, Zero, 0x13, CLKR)
                                            SNVS (0x62D0, Arg1)
                                        }
                                    }
                                }
                            }
                            Else
                            {
                                Store (Zero, ASB0)
                            }
                        }
                    }
                }
            }
        }

        Name (CLKR, Buffer (0x18)
        {
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
        })
        Name (PCEF, Buffer (0x3E)
        {
            0xC8, 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 
            0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 
            0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 
            0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 0xF0, 
            0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x00, 
            0x02, 0x04, 0x06, 0x08, 0x85, 0x86, 0x87, 0x88, 
            0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 
            0x91, 0x92, 0x93, 0x94, 0x95, 0x96
        })
        Name (MNBF, Buffer (0x0387)
        {
            0x05, 0xC8, 0x3C, 0x05, 0xCA, 0x3C, 0x05, 0xCC, 
            0x3C, 0x05, 0xCE, 0x3C, 0x05, 0xD0, 0x3C, 0x05, 
            0xD2, 0x3C, 0x05, 0xD4, 0x3C, 0x05, 0xD6, 0x3C, 
            0x05, 0xD8, 0x3C, 0x05, 0xDA, 0x3C, 0x05, 0xDC, 
            0x3C, 0x05, 0xDE, 0x3C, 0x05, 0xE0, 0x3C, 0x05, 
            0xE2, 0x3C, 0x05, 0xE4, 0x3C, 0x05, 0xE6, 0x3C, 
            0x05, 0xE8, 0x3C, 0x05, 0xEA, 0x3C, 0x05, 0xEC, 
            0x3C, 0x05, 0xEE, 0x3C, 0x05, 0xF0, 0x3C, 0x05, 
            0xF2, 0x3C, 0x05, 0xF4, 0x3C, 0x05, 0xF6, 0x3C, 
            0x05, 0xF8, 0x3C, 0x05, 0xFA, 0x3C, 0x05, 0xFC, 
            0x3C, 0x05, 0xFE, 0x3C, 0x05, 0x00, 0xBC, 0x05, 
            0x02, 0xBC, 0x05, 0x04, 0xBC, 0x05, 0x06, 0xBC, 
            0x05, 0x08, 0xBC, 0x03, 0x8A, 0x3E, 0x03, 0x70, 
            0x32, 0x03, 0x9E, 0x46, 0x03, 0x7D, 0x37, 0x03, 
            0x8D, 0x3E, 0x03, 0x8A, 0x3C, 0x03, 0x8B, 0x3C, 
            0x03, 0x90, 0x3E, 0x03, 0x8D, 0x3C, 0x03, 0x8E, 
            0x3C, 0x03, 0x93, 0x3E, 0x03, 0x90, 0x3C, 0x03, 
            0x91, 0x3C, 0x03, 0x92, 0x3C, 0x03, 0x97, 0x3E, 
            0x03, 0x94, 0x3C, 0x03, 0x95, 0x3C, 0x03, 0x96, 
            0x3C, 0x03, 0x97, 0x3C, 0x03, 0x98, 0x3C, 0x03, 
            0x9E, 0x3E, 0x03, 0x9A, 0x3C, 0x03, 0x9B, 0x3C, 
            0x03, 0x9C, 0x3C, 0x03, 0x9D, 0x3C, 0x03, 0x9E, 
            0x3C, 0x03, 0x9F, 0x3C, 0x03, 0xA5, 0x3E, 0x03, 
            0xA1, 0x3C, 0x03, 0xA2, 0x3C, 0x03, 0xA3, 0x3C, 
            0x03, 0xA4, 0x3C, 0x03, 0xA5, 0x3C, 0x03, 0xA6, 
            0x3C, 0x03, 0xA7, 0x3C, 0x03, 0xA8, 0x3C, 0x03, 
            0xA9, 0x3C, 0x03, 0xAA, 0x3C, 0x03, 0xAB, 0x3C, 
            0x03, 0xAC, 0x3C, 0x03, 0xAD, 0x3C, 0x03, 0xAE, 
            0x3C, 0x03, 0xAF, 0x3C, 0x03, 0xB0, 0x3C, 0x03, 
            0xB1, 0x3C, 0x03, 0xB2, 0x3C, 0x03, 0xB3, 0x3C, 
            0x03, 0xB4, 0x3C, 0x03, 0xB5, 0x3C, 0x03, 0xB6, 
            0x3C, 0x03, 0xB7, 0x3C, 0x03, 0xB8, 0x3C, 0x03, 
            0xB9, 0x3C, 0x03, 0xBA, 0x3C, 0x03, 0xBB, 0x3C, 
            0x03, 0xBC, 0x3C, 0x03, 0xBD, 0x3C, 0x03, 0xBE, 
            0x3C, 0x03, 0xBF, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 
            0xC1, 0x3C, 0x03, 0xC2, 0x3C, 0x03, 0xC3, 0x3C, 
            0x03, 0xC4, 0x3C, 0x03, 0xC5, 0x3C, 0x03, 0xC6, 
            0x3C, 0x03, 0xC7, 0x3C, 0x02, 0xD6, 0x40, 0x02, 
            0xA8, 0x32, 0x02, 0xB3, 0x35, 0x02, 0xBE, 0x38, 
            0x02, 0xBF, 0x38, 0x02, 0xCD, 0x3C, 0x02, 0xDB, 
            0x40, 0x02, 0xCF, 0x3C, 0x02, 0xD0, 0x3C, 0x02, 
            0xD1, 0x3C, 0x02, 0xE0, 0x40, 0x02, 0xD3, 0x3C, 
            0x02, 0xD4, 0x3C, 0x02, 0xD5, 0x3C, 0x02, 0xE4, 
            0x40, 0x02, 0xD7, 0x3C, 0x02, 0xD8, 0x3C, 0x02, 
            0xD9, 0x3C, 0x02, 0xDA, 0x3C, 0x02, 0xDB, 0x3C, 
            0x02, 0xEA, 0x40, 0x02, 0xDD, 0x3C, 0x02, 0xDE, 
            0x3C, 0x02, 0xDF, 0x3C, 0x02, 0xE0, 0x3C, 0x02, 
            0xE1, 0x3C, 0x02, 0xE2, 0x3C, 0x02, 0xE3, 0x3C, 
            0x02, 0xE4, 0x3C, 0x02, 0xE5, 0x3C, 0x02, 0xF5, 
            0x40, 0x02, 0xE7, 0x3C, 0x02, 0xE8, 0x3C, 0x02, 
            0xE9, 0x3C, 0x02, 0xEA, 0x3C, 0x02, 0xEB, 0x3C, 
            0x02, 0xEC, 0x3C, 0x02, 0xED, 0x3C, 0x02, 0xEE, 
            0x3C, 0x02, 0xEF, 0x3C, 0x02, 0xFF, 0x40, 0x02, 
            0xF1, 0x3C, 0x02, 0xF2, 0x3C, 0x02, 0xF3, 0x3C, 
            0x02, 0xF4, 0x3C, 0x02, 0xF5, 0x3C, 0x02, 0xF6, 
            0x3C, 0x02, 0xF7, 0x3C, 0x02, 0xF8, 0x3C, 0x02, 
            0xF9, 0x3C, 0x02, 0xFA, 0x3C, 0x02, 0xFB, 0x3C, 
            0x02, 0xFC, 0x3C, 0x02, 0xFD, 0x3C, 0x02, 0xFE, 
            0x3C, 0x02, 0xFF, 0x3C, 0x02, 0x00, 0xBC, 0x02, 
            0x01, 0xBC, 0x02, 0x02, 0xBC, 0x02, 0x03, 0xBC, 
            0x02, 0x82, 0x1E, 0x02, 0x05, 0xBC, 0x02, 0x06, 
            0xBC, 0x02, 0x07, 0xBC, 0x02, 0x08, 0xBC, 0x02, 
            0x09, 0xBC, 0x00, 0xAA, 0x33, 0x00, 0xE7, 0x45, 
            0x00, 0xA8, 0x32, 0x00, 0xAC, 0x33, 0x00, 0xB0, 
            0x34, 0x00, 0x69, 0x1F, 0x00, 0x44, 0x14, 0x00, 
            0x74, 0x22, 0x00, 0xAE, 0x33, 0x00, 0x6E, 0x20, 
            0x00, 0x45, 0x14, 0x00, 0x5A, 0x1A, 0x00, 0x49, 
            0x15, 0x00, 0x81, 0x25, 0x00, 0x46, 0x14, 0x00, 
            0xB3, 0x33, 0x00, 0x4A, 0x15, 0x00, 0x5C, 0x1A, 
            0x00, 0x47, 0x14, 0x00, 0x72, 0x20, 0x00, 0xB6, 
            0x33, 0x00, 0x7A, 0x22, 0x00, 0x48, 0x14, 0x00, 
            0x70, 0x1F, 0x00, 0x57, 0x18, 0x00, 0x50, 0x16, 
            0x00, 0x49, 0x14, 0x00, 0xE3, 0x3E, 0x00, 0xBB, 
            0x33, 0x00, 0x76, 0x20, 0x00, 0x4A, 0x14, 0x00, 
            0xC1, 0x34, 0x00, 0x6C, 0x1D, 0x00, 0x47, 0x13, 
            0x00, 0x4B, 0x14, 0x00, 0x4F, 0x15, 0x00, 0x75, 
            0x1F, 0x00, 0x7D, 0x21, 0x00, 0x4C, 0x14, 0x00, 
            0x7A, 0x20, 0x00, 0xC3, 0x33, 0x00, 0x77, 0x1F, 
            0x00, 0x4D, 0x14, 0x00, 0x55, 0x16, 0x00, 0x5D, 
            0x18, 0x00, 0xAB, 0x2C, 0x00, 0x4E, 0x14, 0x00, 
            0x5A, 0x17, 0x00, 0x6A, 0x1B, 0x00, 0x7E, 0x20, 
            0x00, 0x4F, 0x14, 0x00, 0x67, 0x1A, 0x00, 0x9B, 
            0x27, 0x00, 0xF7, 0x3E, 0x00, 0xCC, 0x33, 0x04, 
            0xC6, 0x4A, 0x04, 0xA1, 0x3C, 0x04, 0x8C, 0x34, 
            0x04, 0x87, 0x32, 0x04, 0x95, 0x37, 0x04, 0x90, 
            0x35, 0x04, 0x8B, 0x33, 0x04, 0xA4, 0x3C, 0x04, 
            0x9F, 0x3A, 0x04, 0x8F, 0x34, 0x04, 0xA0, 0x3A, 
            0x04, 0xA6, 0x3C, 0x04, 0x56, 0x1F, 0x04, 0x40, 
            0x17, 0x04, 0x43, 0x18, 0x04, 0x38, 0x14, 0x04, 
            0x49, 0x1A, 0x04, 0x8A, 0x31, 0x04, 0x71, 0x28, 
            0x04, 0x44, 0x18, 0x04, 0x6C, 0x26, 0x04, 0x39, 
            0x14, 0x04, 0xCB, 0x47, 0x04, 0x56, 0x1E, 0x04, 
            0x45, 0x18, 0x04, 0x7C, 0x2B, 0x04, 0x6B, 0x25, 
            0x04, 0x3A, 0x14, 0x04, 0x40, 0x16, 0x04, 0x46, 
            0x18, 0x04, 0x75, 0x28, 0x04, 0x58, 0x1E, 0x04, 
            0x64, 0x22, 0x04, 0x3B, 0x14, 0x04, 0x47, 0x18, 
            0x04, 0x59, 0x1E, 0x04, 0x74, 0x27, 0x04, 0xAD, 
            0x3A, 0x04, 0xEF, 0x50, 0x04, 0x3C, 0x14, 0x04, 
            0xF1, 0x50, 0x04, 0xAF, 0x3A, 0x04, 0x76, 0x27, 
            0x04, 0x5B, 0x1E, 0x04, 0x49, 0x18, 0x04, 0x3D, 
            0x14, 0x04, 0x68, 0x22, 0x04, 0x5C, 0x1E, 0x04, 
            0x7B, 0x28, 0x04, 0x4A, 0x18, 0x04, 0x44, 0x16, 
            0x04, 0x3E, 0x14, 0x04, 0x73, 0x25, 0x04, 0x86, 
            0x2B, 0x04, 0x4B, 0x18, 0x04, 0x5E, 0x1E, 0x04, 
            0xDF, 0x47, 0x04, 0x3F, 0x14, 0x04, 0x78, 0x26, 
            0x04, 0x4C, 0x18, 0x04, 0x7F, 0x28, 0x04, 0x9C, 
            0x31, 0x04, 0x53, 0x1A, 0x04, 0x40, 0x14, 0x04, 
            0x4D, 0x18, 0x04, 0x4A, 0x17, 0x04, 0x64, 0x1F, 
            0x04, 0x61, 0x1E, 0x04, 0x5E, 0x1D, 0x04, 0x41, 
            0x14, 0x04, 0x65, 0x1F, 0x04, 0x62, 0x1E, 0x04, 
            0x83, 0x28, 0x04, 0x97, 0x2E, 0x04, 0x4F, 0x18, 
            0x04, 0x42, 0x14, 0x04, 0x56, 0x1A, 0x04, 0x88, 
            0x29, 0x04, 0x7B, 0x25, 0x04, 0x46, 0x15
        })
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (OC01, Package (0x06)
        {
            0x01010000, 
            "CPU FSB", 
            0x2710, 
            0x9C40, 
            0x012D, 
            0x00010003
        })
        Name (OT00, Package (0x04)
        {
            0x01010000, 
            0x2710, 
            Zero, 
            One
        })
        Name (OC02, Package (0x06)
        {
            0x01060001, 
            "CPU Multiplier", 
            0x08, 
            0x18, 
            0x11, 
            0x00010003
        })
        Name (CPUM, Package (0x04)
        {
            0x01060001, 
            0x0A, 
            Zero, 
            Zero
        })
        Name (OC03, Package (0x06)
        {
            0x02010002, 
            "Memory Freq", 
            Zero, 
            Zero, 
            0x07, 
            0x00010000
        })
        Name (MEMO, Package (0x0B)
        {
            0x02010002, 
            0xD034, 
            Zero, 
            One, 
            "Auto", 
            "RESERVE", 
            "533 MHz", 
            "667 MHz", 
            "800 MHz", 
            "889 MHz", 
            "1067 MHz"
        })
        Name (OC04, Package (0x06)
        {
            0x07010003, 
            "PCI Express", 
            0x2328, 
            0x3A98, 
            0x3D, 
            0x00010000
        })
        Name (PCIO, Package (0x04)
        {
            0x07010003, 
            0x2328, 
            Zero, 
            One
        })
        Name (OC0A, Package (0x06)
        {
            0x0202000F, 
            "DRAM Voltage", 
            0x0708, 
            0x0992, 
            0x0E, 
            0x0001000F
        })
        Name (RAMV, Package (0x13)
        {
            0x0202000F, 
            0x0708, 
            0x02, 
            One, 
            "Auto", 
            "1.80V", 
            "1.85V", 
            "1.90V", 
            "1.95V", 
            "2.00V", 
            "2.05V", 
            "2.10V", 
            "2.15V", 
            "2.20V", 
            "2.25V", 
            "2.30V", 
            "2.35V", 
            "2.40V", 
            "2.45V"
        })
        Name (OC0D, Package (0x06)
        {
            0x0906000C, 
            "AI Overclock Tuner", 
            Zero, 
            0x04, 
            0x05, 
            0x00010003
        })
        Name (AITM, Package (0x09)
        {
            0x0906000C, 
            Zero, 
            One, 
            One, 
            "Manual", 
            "Auto", 
            "Standard", 
            "", 
            "AI N.O.S."
        })
        Name (OC0E, Package (0x06)
        {
            0x0806000D, 
            "NOS Mode", 
            Zero, 
            One, 
            0x02, 
            0x00010003
        })
        Name (NOSM, Package (0x06)
        {
            0x0806000D, 
            Zero, 
            Zero, 
            One, 
            "Auto", 
            "Manual"
        })
        Name (OC06, Package (0x06)
        {
            0x08050005, 
            "Turbo NOS", 
            0x67, 
            0x78, 
            0x07, 
            0x00010003
        })
        Name (AOC2, Package (0x0B)
        {
            0x08050005, 
            0x64, 
            Zero, 
            One, 
            "", 
            "103%", 
            "105%", 
            "107%", 
            "110%", 
            "115%", 
            "120%"
        })
        Name (OC0F, Package (0x06)
        {
            0x0806000E, 
            "Sensitivity", 
            Zero, 
            0x03, 
            0x04, 
            0x00010003
        })
        Name (SENS, Package (0x07)
        {
            0x0806000E, 
            Zero, 
            Zero, 
            One, 
            "Standard", 
            "Sensitive", 
            "Heavy load"
        })
        Name (EPTY, Package (0x04)
        {
            0x12345678, 
            0x06, 
            0x06, 
            Zero
        })
        Name (OBUF, Package (0x09)
        {
            OC01, 
            OC02, 
            OC03, 
            OC04, 
            OC06, 
            OC0A, 
            OC0D, 
            OC0E, 
            OC0F
        })
        Method (ASIF, 0, NotSerialized)
        {
            Return (MBIF)
        }

        Method (OCIF, 0, NotSerialized)
        {
            Return (OBUF)
        }

        Method (GPRE, 1, NotSerialized)
        {
            If (Arg0)
            {
                OCOP (0x01010000)
                Store (ASB1, Index (PREB, One))
                OCOP (0x01060001)
                Store (ASB1, Index (PREB, 0x03))
                OCOP (0x02010002)
                Store (ASB1, Index (PREB, 0x05))
                OCOP (0x07010003)
                Store (ASB1, Index (PREB, 0x07))
                OCOP (0x0202000F)
                Store (ASB1, Index (PREB, 0x09))
                OCOP (0x0906000C)
                Store (ASB1, Index (PREB, 0x0B))
                OCOP (0x0806000D)
                Store (ASB1, Index (PREB, 0x0D))
                OCOP (0x0806000E)
                Store (ASB1, Index (PREB, 0x0F))
                OCOP (0x08050005)
                Store (ASB1, Index (PREB, 0x11))
            }
            Else
            {
                Store (DerefOf (Index (G3T0, 0x03)), Index (PREB, One))
                Store (DerefOf (Index (G3T2, 0x03)), Index (PREB, 0x03))
                Store (DerefOf (Index (G322, 0x03)), Index (PREB, 0x05))
                Store (DerefOf (Index (G340, 0x03)), Index (PREB, 0x07))
                Store (DerefOf (Index (G321, 0x03)), Index (PREB, 0x09))
                Store (DerefOf (Index (G9T0, 0x03)), Index (PREB, 0x0B))
                Store (Zero, Index (PREB, 0x0D))
                Store (DerefOf (Index (G8T1, 0x03)), Index (PREB, 0x0F))
                Store (DerefOf (Index (G8T2, 0x03)), Index (PREB, 0x11))
            }

            Return (PREB)
        }

        Name (PREB, Package (0x12)
        {
            0x01010000, 
            Zero, 
            0x01060001, 
            Zero, 
            0x02010002, 
            Zero, 
            0x07010003, 
            Zero, 
            0x0202000F, 
            Zero, 
            0x0906000C, 
            Zero, 
            0x0806000D, 
            Zero, 
            0x08050005, 
            Zero, 
            0x0806000E, 
            Zero
        })
        Method (OCOP, 1, NotSerialized)
        {
            Store (One, ASB0)
            Name (_T_0, Zero)
            Store (Arg0, _T_0)
            If (LEqual (_T_0, 0x01010000))
            {
                GIT3 (0x03010011)
                Store (ASB1, Index (OT00, One))
                Store (ASB1, Index (OT00, 0x02))
                Return (OT00)
            }
            Else
            {
                If (LEqual (_T_0, 0x01060001))
                {
                    GIT3 (0x03060013)
                    Store (ASB1, Index (CPUM, One))
                    Return (CPUM)
                }
                Else
                {
                    If (LEqual (_T_0, 0x02010002))
                    {
                        GIT3 (0x03080031)
                        Store (ASB1, Index (MEMO, 0x02))
                        Return (MEMO)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x07010003))
                        {
                            GIT3 (0x03810051)
                            Store (ASB1, Index (PCIO, 0x02))
                            Return (PCIO)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x0202000F))
                            {
                                GIT3 (0x03820032)
                                Store (ASB1, Index (RAMV, 0x02))
                                Return (RAMV)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x0906000C))
                                {
                                    GIT9 (0x09080000)
                                    Store (ASB1, Index (AITM, 0x02))
                                    Return (AITM)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x0806000D))
                                    {
                                        GIT8 (0x08080001)
                                        If (LGreater (ASB1, Zero))
                                        {
                                            Store (One, ASB1)
                                        }
                                        Else
                                        {
                                            Store (Zero, ASB1)
                                        }

                                        Store (ASB1, Index (NOSM, 0x02))
                                        Return (NOSM)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x0806000E))
                                        {
                                            GIT8 (0x08080001)
                                            If (LGreater (ASB1, Zero))
                                            {
                                                Decrement (ASB1)
                                            }

                                            Store (ASB1, Index (SENS, 0x02))
                                            Return (SENS)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x08050005))
                                            {
                                                GIT8 (0x08080002)
                                                Store (ASB1, Index (AOC2, 0x02))
                                                Return (AOC2)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Return (EPTY)
        }

        Name (NOSF, Zero)
        Method (PROC, 3, NotSerialized)
        {
            Store (One, ASB0)
            ShiftRight (Arg0, 0x10, Local0)
            Name (_T_0, Zero)
            Store (Arg0, _T_0)
            If (LEqual (_T_0, 0x01010000))
            {
                SIT3 (0x03010011, Arg1, Arg2)
            }
            Else
            {
                If (LEqual (_T_0, 0x01060001))
                {
                    SIT3 (0x03060013, Arg1, Arg2)
                }
                Else
                {
                    If (LEqual (_T_0, 0x02010002))
                    {
                        SIT3 (0x03080031, Arg1, Arg2)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x07010003))
                        {
                            SIT3 (0x03810051, Arg1, Arg2)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x0202000F))
                            {
                                Or (Arg1, ShiftLeft (Arg2, 0x08), Local0)
                                Store (Local0, DBGX)
                                SIT3 (0x03820032, Arg1, Arg2)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x0906000C))
                                {
                                    SIT9 (0x09080000, Arg1, Arg2)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x0806000D))
                                    {
                                        If (LEqual (Arg1, Zero))
                                        {
                                            SIT8 (0x08080001, Zero, Arg2)
                                            Store (Zero, NOSF)
                                        }
                                        Else
                                        {
                                            Store (One, NOSF)
                                        }
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x0806000E))
                                        {
                                            If (NOSF)
                                            {
                                                Add (Arg1, One, Local0)
                                                SIT8 (0x08080001, Local0, Arg2)
                                            }
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x08050005))
                                            {
                                                SIT8 (0x08080002, Arg1, Arg2)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Return (ASB0)
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G4T0, Package (0x04)
        {
            0x04060000, 
            " ASUS Advanced Q-Fan control", 
            0x40000000, 
            Zero
        })
        Name (G4T1, Package (0x0A)
        {
            0x04080011, 
            " FAN profile", 
            0x00100001, 
            0x03, 
            0x05, 
            "Disabled", 
            "Performance", 
            "Optimal", 
            "Silent", 
            "Ultra Silent"
        })
        Name (G4T2, Package (0x09)
        {
            0x04080011, 
            " FAN profile", 
            0x00100001, 
            0x03, 
            0x04, 
            "Disabled", 
            "Performance", 
            "Optimal", 
            "Silent"
        })
        Name (GR41, Package (0x02)
        {
            G4T0, 
            G4T1
        })
        Name (GR42, Package (0x02)
        {
            G4T0, 
            G4T2
        })
        Method (GIT4, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (GNVS (0x2780), ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x11))
                {
                    Store (GNVS (0x3510), ASB1)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }

        Method (SIT4, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                If (LNot (LEqual (GNVS (0x3510), Arg1)))
                {
                    SNVS (0x3510, Arg1)
                    Store (0x77, PAR0)
                    ISMI (0x88)
                }
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G5T0, Package (0x07)
        {
            0x05080000, 
            "AI Profile", 
            Zero, 
            Zero, 
            0x02, 
            "AUTO", 
            Zero
        })
        Name (GRP5, Package (0x01)
        {
            G5T0
        })
        Method (GIT5, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (One, ASB1)
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }

        Method (SIT5, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (0x03, ASB0)
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G6T1, Package (0x07)
        {
            0x06020011, 
            "Vcore Voltage", 
            0x20000000, 
            Zero, 
            0x0352, 
            0x02EE, 
            0x02
        })
        Name (G6T2, Package (0x07)
        {
            0x06030012, 
            "CPU Temperature", 
            0x20000000, 
            Zero, 
            0x0258, 
            0x015E, 
            0x02
        })
        Name (G6T3, Package (0x07)
        {
            0x06040013, 
            "CPU Fan Speed", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x1900, 
            0x02
        })
        Name (G6T4, Package (0x07)
        {
            0x06040073, 
            "Chassis Fan Speed", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x1900, 
            0x02
        })
        Name (G6T5, Package (0x07)
        {
            0x060400C3, 
            "Power Fan Speed", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x1900, 
            0x02
        })
        Name (G6T6, Package (0x07)
        {
            0x06020061, 
            "+12V Voltage", 
            0x20000000, 
            0x2EE0, 
            0x27D8, 
            0x0E10, 
            0x02
        })
        Name (G6T7, Package (0x07)
        {
            0x06020062, 
            "+5V Voltage", 
            0x20000000, 
            0x1388, 
            0x1194, 
            0x03E8, 
            0x02
        })
        Name (G6T8, Package (0x07)
        {
            0x06020063, 
            "+3.3V Voltage", 
            0x20000000, 
            0x0CE4, 
            0x0B9A, 
            0x0294, 
            0x02
        })
        Name (G6T9, Package (0x07)
        {
            0x06030074, 
            "MB Temperature", 
            0x20000000, 
            Zero, 
            0x01C2, 
            0x01F4, 
            0x02
        })
        Name (GRP6, Package (0x09)
        {
            G6T1, 
            G6T2, 
            G6T3, 
            G6T4, 
            G6T5, 
            G6T6, 
            G6T7, 
            G6T8, 
            G6T9
        })
        Method (GIT6, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Store (0x0600, ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x12))
                {
                    Store (0x0601, ASB1)
                }
                Else
                {
                    If (LEqual (_T_0, 0x13))
                    {
                        Store (0x0602, ASB1)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x73))
                        {
                            Store (0x0603, ASB1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0xC3))
                            {
                                Store (0x0604, ASB1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x61))
                                {
                                    Store (0x0605, ASB1)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x62))
                                    {
                                        Store (0x0606, ASB1)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x63))
                                        {
                                            Store (0x0607, ASB1)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x74))
                                            {
                                                Store (0x0608, ASB1)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        Method (SIT6, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Store (0x0600, DBG8)
            }
            Else
            {
                If (LEqual (_T_0, 0x12))
                {
                    Store (0x0601, DBG8)
                }
                Else
                {
                    If (LEqual (_T_0, 0x13))
                    {
                        Store (0x0602, DBG8)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x73))
                        {
                            Store (0x0603, DBG8)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0xC3))
                            {
                                Store (0x0604, DBG8)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x61))
                                {
                                    Store (0x0605, DBG8)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x62))
                                    {
                                        Store (0x0606, DBG8)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x63))
                                        {
                                            Store (0x0607, DBG8)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x74))
                                            {
                                                Store (0x0608, DBG8)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G8T1, Package (0x09)
        {
            0x08080001, 
            "N.O.S. sensitivity", 
            Zero, 
            Zero, 
            0x04, 
            "Auto", 
            "Standard", 
            "Sensitive", 
            "Heavy load"
        })
        Name (G8T2, Package (0x0C)
        {
            0x08080002, 
            "N.O.S. profile", 
            Zero, 
            One, 
            0x07, 
            Zero, 
            "103%", 
            "105%", 
            "107%", 
            "110%", 
            "115%", 
            "120%"
        })
        Name (GRP8, Package (0x02)
        {
            G8T1, 
            G8T2
        })
        Name (TEMP, Zero)
        Method (GIT8, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, One))
            {
                Store (GNVS (0x2564), ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x02))
                {
                    Store (GNVS (0x34EB), ASB1)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }

        Method (SIT8, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, One))
            {
                If (LNot (LEqual (GNVS (0x2564), Arg1)))
                {
                    If (And (Arg2, One))
                    {
                        SNVS (0x2564, Arg1)
                    }

                    Or (ASB0, 0x02, ASB0)
                }
            }
            Else
            {
                If (LEqual (_T_0, 0x02))
                {
                    If (LNot (LEqual (GNVS (0x34EB), Arg1)))
                    {
                        If (And (Arg2, One))
                        {
                            SNVS (0x34EB, Arg1)
                        }

                        Or (ASB0, 0x02, ASB0)
                    }
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G9T0, Package (0x0A)
        {
            0x09080000, 
            "AI Tunning", 
            Zero, 
            One, 
            0x05, 
            "Manual", 
            "Auto", 
            "Standard", 
            Zero, 
            "AI N.O.S"
        })
        Name (GRP9, Package (0x01)
        {
            G9T0
        })
        Method (GIT9, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (GNVS (0x34E3), ASB1)
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }

        Method (SIT9, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                If (LNot (LEqual (GNVS (0x34E3), Arg1)))
                {
                    If (And (Arg2, One))
                    {
                        SNVS (0x34E3, Arg1)
                    }

                    Or (ASB0, 0x02, ASB0)
                }
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (GAT1, Package (0x04)
        {
            0x0A070001, 
            "Music Alarm", 
            Zero, 
            Zero
        })
        Name (GAT2, Package (0x04)
        {
            0x0A070002, 
            "Sunday", 
            Zero, 
            One
        })
        Name (GAT3, Package (0x04)
        {
            0x0A070003, 
            "Monday", 
            Zero, 
            One
        })
        Name (GAT4, Package (0x04)
        {
            0x0A070004, 
            "Tuesday", 
            Zero, 
            One
        })
        Name (GAT5, Package (0x04)
        {
            0x0A070005, 
            "Wednesday", 
            Zero, 
            One
        })
        Name (GAT6, Package (0x04)
        {
            0x0A070006, 
            "Thursday", 
            Zero, 
            One
        })
        Name (GAT7, Package (0x04)
        {
            0x0A070007, 
            "Friday", 
            Zero, 
            One
        })
        Name (GAT8, Package (0x04)
        {
            0x0A070008, 
            "Saturday", 
            Zero, 
            One
        })
        Name (GAT9, Package (0x07)
        {
            0x0A060009, 
            "Alarm Hour", 
            Zero, 
            0x0C, 
            Zero, 
            One, 
            0x18
        })
        Name (GATA, Package (0x07)
        {
            0x0A06000A, 
            "Alarm Mins", 
            Zero, 
            Zero, 
            Zero, 
            One, 
            0x3C
        })
        Name (GATB, Package (0x0A)
        {
            0x0A08000B, 
            "Music Alarm Drive", 
            Zero, 
            0x03, 
            0x05, 
            "Primary IDE Master", 
            "Primary IDE Slave", 
            "Secondary IDE Master", 
            "Secondary IDE Slave", 
            "JMicron JMB363 IDE"
        })
        Name (GATC, Package (0x07)
        {
            0x0A06000C, 
            "Starting Track", 
            Zero, 
            0x10, 
            Zero, 
            One, 
            0x20
        })
        Name (GATD, Package (0x08)
        {
            0x0A08000D, 
            "Repeat", 
            Zero, 
            Zero, 
            0x03, 
            "none", 
            "Single", 
            "All"
        })
        Name (GATE, Package (0x09)
        {
            0x0A08000E, 
            "Length", 
            Zero, 
            Zero, 
            0x04, 
            "10 mins", 
            "20 mins", 
            "30 mins", 
            "1 hour"
        })
        Name (GATF, Package (0x07)
        {
            0x0A06000F, 
            "Volume", 
            Zero, 
            0x0F, 
            Zero, 
            One, 
            0x20
        })
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (GBT0, Package (0x07)
        {
            0x0B060001, 
            "System performance", 
            0x00400000, 
            Zero, 
            0x03, 
            One, 
            0x04
        })
        Name (GRPB, Package (0x01)
        {
            GBT0
        })
        Name (VEAL, Zero)
        Method (GITB, 1, NotSerialized)
        {
            Store (VEAL, ASB1)
        }

        Method (SITB, 3, NotSerialized)
        {
            If (LEqual (And (Arg2, 0xFFFF), One))
            {
                And (Arg1, 0xFFFF, VEAL)
                Store (VEAL, ASB1)
                Store (VEAL, PAR0)
                ISMI (0x88)
            }
        }
    }

    OperationRegion (_SB.PCI0.SBRG.PIX0, PCI_Config, 0x60, 0x0C)
    Field (\_SB.PCI0.SBRG.PIX0, ByteAcc, NoLock, Preserve)
    {
        PIRA,   8, 
        PIRB,   8, 
        PIRC,   8, 
        PIRD,   8, 
        Offset (0x08), 
        PIRE,   8, 
        PIRF,   8, 
        PIRG,   8, 
        PIRH,   8
    }

    Scope (_SB)
    {
        Name (BUFA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared)
                {15}
        })
        CreateWordField (BUFA, One, IRA0)
        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, One)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRA, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSA)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRA, 0x80, PIRA)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRA, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRA)
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x02)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRB, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSB)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRB, 0x80, PIRB)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRB, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRB)
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x03)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRC, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSC)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRC, 0x80, PIRC)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRC, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRC)
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x04)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRD, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSD)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRD, 0x80, PIRD)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRD, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRD)
            }
        }

        Device (LNKE)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x05)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRE, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSE)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRE, 0x80, PIRE)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRE, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRE)
            }
        }

        Device (LNKF)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x06)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRF, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSF)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRF, 0x80, PIRF)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRF, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRF)
            }
        }

        Device (LNKG)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x07)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRG, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSG)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRG, 0x80, PIRG)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRG, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRG)
            }
        }

        Device (LNKH)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x08)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRH, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSH)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRH, 0x80, PIRH)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRH, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRH)
            }
        }
    }

    Scope (_SB)
    {
        Name (XCPD, Zero)
        Name (XNPT, One)
        Name (XCAP, 0x02)
        Name (XDCP, 0x04)
        Name (XDCT, 0x08)
        Name (XDST, 0x0A)
        Name (XLCP, 0x0C)
        Name (XLCT, 0x10)
        Name (XLST, 0x12)
        Name (XSCP, 0x14)
        Name (XSCT, 0x18)
        Name (XSST, 0x1A)
        Name (XRCT, 0x1C)
        Mutex (MUTE, 0x00)
        Method (RBPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, One)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (RWPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (RDPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (WBPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x0FFF)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, One)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (WWPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (WDPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (RWDP, 3, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            And (XCFG, Arg2, Local1)
            Or (Local1, Arg1, XCFG)
            Release (MUTE)
        }

        Method (RPME, 1, NotSerialized)
        {
            Add (Arg0, 0x84, Local0)
            Store (RDPE (Local0), Local1)
            If (LEqual (Local1, Ones))
            {
                Return (Zero)
            }
            Else
            {
                If (LAnd (Local1, 0x00010000))
                {
                    WDPE (Local0, And (Local1, 0x00010000))
                    Return (One)
                }

                Return (Zero)
            }
        }
    }

    OperationRegion (SMRG, SystemIO, 0x0400, 0x10)
    Field (SMRG, ByteAcc, NoLock, Preserve)
    {
        HSTS,   8, 
        SSTS,   8, 
        HSTC,   8, 
        HCMD,   8, 
        HADR,   8, 
        HDT0,   8, 
        HDT1,   8, 
        BLKD,   8
    }

    Field (SMRG, ByteAcc, NoLock, Preserve)
    {
        Offset (0x05), 
        HDTW,   16
    }

    Method (SCMD, 4, Serialized)
    {
        Store (0x05, Local0)
        While (Decrement (Local0))
        {
            Store (0xFFFF, Local1)
            While (LAnd (HSTS, Decrement (Local1)))
            {
                Store (0xFE, HSTS)
                Stall (0x0A)
            }

            Store (HSTC, Local2)
            Store (Arg0, HADR)
            Store (Arg1, HCMD)
            Store (Arg2, HDTW)
            Store (Arg3, HSTC)
            Store (0xFFFF, Local1)
            While (Decrement (Local1))
            {
                If (And (HSTS, 0x0C))
                {
                    Store (One, Local1)
                }

                If (LEqual (And (HSTS, 0x03), 0x02))
                {
                    Return (HDTW)
                }

                Stall (0x0A)
            }

            Store (0x42, HSTC)
            Store (0xFFFF, Local1)
            While (Decrement (Local1))
            {
                If (And (HSTS, 0x10))
                {
                    Store (One, Local1)
                }

                Stall (0x0A)
            }

            Store (Zero, HSTC)
        }

        Return (Ones)
    }

    Method (SBYT, 2, NotSerialized)
    {
        SCMD (Arg0, Arg1, Zero, 0x44)
    }

    Method (WBYT, 3, NotSerialized)
    {
        SCMD (Arg0, Arg1, Arg2, 0x48)
    }

    Method (WWRD, 3, NotSerialized)
    {
        SCMD (Arg0, Arg1, Arg2, 0x4C)
    }

    Method (RSBT, 2, NotSerialized)
    {
        Or (Arg0, One, Arg0)
        Return (And (SCMD (Arg0, Arg1, Zero, 0x44), 0xFF))
    }

    Method (RBYT, 2, NotSerialized)
    {
        Or (Arg0, One, Arg0)
        Return (And (SCMD (Arg0, Arg1, Zero, 0x48), 0xFF))
    }

    Method (RWRD, 2, NotSerialized)
    {
        Or (Arg0, One, Arg0)
        Return (SCMD (Arg0, Arg1, Zero, 0x4C))
    }

    Method (RBLK, 3, NotSerialized)
    {
        Or (Arg0, One, Local0)
        SCMD (Local0, Arg1, Arg2, 0x54)
        Store (HSTC, Local0)
        Store (HDT0, Local0)
        Add (Local0, One, Local7)
        Name (RBUF, Buffer (Local7) {})
        Store (Zero, Local1)
        While (Local0)
        {
            Store (BLKD, Index (RBUF, Local1))
            Decrement (Local0)
            Increment (Local1)
        }

        Return (RBUF)
    }

    Method (WBLK, 4, NotSerialized)
    {
        Store (HSTC, Local0)
        Store (Zero, Local0)
        While (LNot (LGreater (Local0, Arg2)))
        {
            Store (DerefOf (Index (Arg3, Local0)), BLKD)
            Increment (Local0)
        }

        And (Arg0, 0xFE, Local0)
        SCMD (Local0, Arg1, Arg2, 0x54)
    }

    Name (HBAS, Zero)
    Name (HLBA, Zero)
    Name (HDEV, Zero)
    OperationRegion (REFP, SystemIO, 0x61, One)
    Field (REFP, ByteAcc, NoLock, Preserve)
    {
        P061,   8
    }

    Method (FZHD, 0, NotSerialized)
    {
        Store (0x80, Local0)
        Store (DMAX, Local1)
        While (LNot (LGreater (Local0, Local1)))
        {
            And (Local0, 0x7F, Local3)
            Store (One, Local2)
            ShiftLeft (Local2, Local3, Local2)
            If (LNot (And (\_SB.PCI0.HFZF, Local2)))
            {
                If (FZOD (Local0))
                {
                    Or (\_SB.PCI0.HFZF, Local2, \_SB.PCI0.HFZF)
                }
            }

            Increment (Local0)
        }
    }

    Method (FZOD, 1, NotSerialized)
    {
        GHET (Arg0)
        If (LEqual (HBAS, Zero))
        {
            Return (One)
        }

        If (LEqual (HDEV, Zero))
        {
            Return (One)
        }

        Store (HDEV, Local1)
        And (Local1, 0x10, Local1)
        If (LEqual (Local1, Zero))
        {
            Return (One)
        }

        WFCF ()
        SDRV ()
        Add (HBAS, 0x07, Local1)
        OperationRegion (HRGS, SystemIO, Local1, One)
        Field (HRGS, ByteAcc, NoLock, Preserve)
        {
            SREG,   8
        }

        Store (SREG, Local1)
        And (Local1, 0x80, Local1)
        If (Local1)
        {
            Return (Zero)
        }

        Add (HBAS, 0x07, Local1)
        OperationRegion (HRGC, SystemIO, Local1, One)
        Field (HRGC, ByteAcc, NoLock, Preserve)
        {
            CREG,   8
        }

        Store (0xF5, CREG)
        If (WFCF ())
        {
            Add (HBAS, 0x07, Local0)
            Store (SREG, Local1)
            Return (LNot (And (Local1, One)))
        }
        Else
        {
            Return (Zero)
        }
    }

    OperationRegion (DBGA, SystemIO, 0x80, 0x04)
    Field (DBGA, DWordAcc, NoLock, Preserve)
    {
        DB32,   32
    }

    Method (GHET, 1, NotSerialized)
    {
        And (Arg0, 0x7F, Local0)
        ShiftLeft (Local0, 0x05, Local0)
        Add (Local0, HPTA, Local0)
        OperationRegion (HDPT, SystemMemory, Local0, 0x20)
        Field (HDPT, ByteAcc, NoLock, Preserve)
        {
            HP00,   16, 
            Offset (0x04), 
            HP04,   8, 
            Offset (0x12), 
            HP0C,   8
        }

        Store (HP00, HBAS)
        Store (HP04, HLBA)
        Store (HP0C, HDEV)
    }

    Method (SDRV, 0, NotSerialized)
    {
        Add (HBAS, 0x06, Local0)
        OperationRegion (HRGH, SystemIO, Local0, One)
        Field (HRGH, ByteAcc, NoLock, Preserve)
        {
            HREG,   8
        }

        Store (HLBA, HREG)
    }

    Method (WFCF, 0, NotSerialized)
    {
        SDRV ()
        Add (HBAS, One, Local0)
        OperationRegion (HRGE, SystemIO, Local0, One)
        Field (HRGE, ByteAcc, NoLock, Preserve)
        {
            EREG,   8
        }

        Store (Zero, EREG)
        Add (HBAS, 0x07, Local1)
        OperationRegion (HRGC, SystemIO, Local1, One)
        Field (HRGC, ByteAcc, NoLock, Preserve)
        {
            CREG,   8
        }

        Store (0x28, Local0)
        While (Local0)
        {
            And (CREG, One, Local2)
            If (Local2)
            {
                Return (Zero)
            }

            WFZF (Local1)
            And (CREG, 0x80, Local2)
            If (LEqual (Local2, Zero))
            {
                Return (One)
            }

            Decrement (Local0)
        }

        Return (Zero)
    }

    Method (WFZF, 1, NotSerialized)
    {
        OperationRegion (HRGC, SystemIO, Arg0, One)
        Field (HRGC, ByteAcc, NoLock, Preserve)
        {
            CREG,   8
        }

        Store (0xFFFF, Local1)
        Store (CREG, Local2)
        And (Local2, 0x80, Local2)
        If (LEqual (Local2, Zero))
        {
            Return (Zero)
        }

        While (Local1)
        {
            Stall (0x0F)
            Decrement (Local1)
            If (LEqual (Local1, Zero))
            {
                Return (Zero)
            }

            Store (CREG, Local2)
            And (Local2, 0x80, Local2)
            If (LEqual (Local2, Zero))
            {
                Return (Zero)
            }

            Decrement (Local1)
        }
    }

    Scope (_SB.PCI0)
    {
        Name (HFZF, 0xFFFF)
        Method (HWAK, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x03))
            {
                Store (Zero, HFZF)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.SIOR)
    {
        Method (HWV0, 0, NotSerialized)
        {
            Return (Multiply (VCOR, 0x08))
        }

        Method (HWV1, 0, NotSerialized)
        {
            Return (Multiply (V12V, 0x08))
        }

        Method (HWV3, 0, NotSerialized)
        {
            Return (Multiply (V33V, 0x08))
        }

        Method (HWV5, 0, NotSerialized)
        {
            Return (Multiply (V50V, 0x08))
        }

        Method (HWT0, 0, NotSerialized)
        {
            Store (MBTE, Local1)
            Multiply (Local1, 0x0A, Local1)
            Return (Local1)
        }

        Method (HWT1, 0, NotSerialized)
        {
            Store (One, BSEL)
            Store (TSR1, Local1)
            Multiply (Local1, 0x0A, Local1)
            Store (TSR2, Local2)
            Multiply (Local2, 0x05, Local2)
            Add (Local1, Local2, Local1)
            Return (Local1)
        }

        Method (HWT2, 0, NotSerialized)
        {
            Store (0x02, BSEL)
            Store (TSR1, Local1)
            Multiply (Local1, 0x0A, Local1)
            Store (TSR2, Local2)
            Multiply (Local2, 0x05, Local2)
            Add (Local1, Local2, Local1)
            Return (Local1)
        }

        OperationRegion (DBGE, SystemIO, 0x80, 0x04)
        Field (DBGE, WordAcc, NoLock, Preserve)
        {
            DBGG,   22
        }

        Method (HWF0, 0, NotSerialized)
        {
            Store (FAN1, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x20, Local1)
            ShiftRight (Local1, 0x05, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FDR1, 0x30, Local2)
            ShiftRight (Local2, 0x04, Local2)
            Add (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    Add (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x05, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xDF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0xCF, Local4)
                    ShiftLeft (Local2, 0x04, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN1, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x05, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xDF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0xCF, Local4)
                    ShiftLeft (Local2, 0x04, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN1, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF1, 0, NotSerialized)
        {
            Store (FAN2, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x40, Local1)
            ShiftRight (Local1, 0x06, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FDR1, 0xC0, Local2)
            ShiftRight (Local2, 0x06, Local2)
            Add (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    Add (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x06, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xBF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0x3F, Local4)
                    ShiftLeft (Local2, 0x06, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN2, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x06, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xBF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0x3F, Local4)
                    ShiftLeft (Local2, 0x06, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN2, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF2, 0, NotSerialized)
        {
            Store (FAN3, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x80, Local1)
            ShiftRight (Local1, 0x07, Local1)
            Multiply (Local1, 0x04, Local1)
            Divide (FD13, 0x40, Local2, Local3)
            Add (Local1, Local3, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    If (LEqual (Local0, 0xFF))
                    {
                        Store (0x07, Local1)
                    }
                    Else
                    {
                        Add (Local1, One, Local1)
                    }

                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FD13, Local3)
                    And (Local3, 0x3F, Local3)
                    Multiply (Local2, 0x40, Local2)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FD13)
                    If (LNot (LEqual (Local0, 0xFF)))
                    {
                        Sleep (0x012C)
                    }

                    Store (FAN3, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FD13, Local3)
                    And (Local3, 0x3F, Local3)
                    Multiply (Local2, 0x40, Local2)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FD13)
                    Sleep (0x012C)
                    Store (FAN3, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF3, 0, NotSerialized)
        {
            Store (Zero, BSEL)
            Store (CFN3, Local0)
            And (FD15, 0x80, Local1)
            ShiftRight (Local1, 0x05, Local1)
            And (FND4, 0x03, Local2)
            Or (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    If (LEqual (Local0, 0xFF))
                    {
                        Store (0x07, Local1)
                    }
                    Else
                    {
                        Add (Local1, One, Local1)
                    }

                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD15, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD15)
                    Store (FND4, Local3)
                    And (Local3, 0xFC, Local3)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FND4)
                    If (LNot (LEqual (Local0, 0xFF)))
                    {
                        Sleep (0x012C)
                    }

                    Store (CFN3, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD15, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD15)
                    Store (FND4, Local3)
                    And (Local3, 0xFC, Local3)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FND4)
                    Sleep (0x012C)
                    Store (CFN3, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF4, 0, NotSerialized)
        {
            Store (0x05, BSEL)
            Store (FAN4, Local0)
            Store (Zero, BSEL)
            And (FND4, 0x80, Local1)
            ShiftRight (Local1, 0x08, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FND4, 0x0C, Local2)
            ShiftRight (Local2, 0x02, Local2)
            Add (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    If (LEqual (Local0, 0xFF))
                    {
                        Store (0x07, Local1)
                    }
                    Else
                    {
                        Add (Local1, One, Local1)
                    }

                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x08, Local3)
                    ShiftLeft (Local2, 0x02, Local2)
                    Store (FND4, Local4)
                    And (Local4, 0x73, Local4)
                    Or (Local3, Local2, Local3)
                    Or (Local3, Local4, FND4)
                    If (LNot (LEqual (Local0, 0xFF)))
                    {
                        Sleep (0x012C)
                    }

                    Store (0x05, BSEL)
                    Store (FAN4, Local0)
                    Store (Zero, BSEL)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x08, Local3)
                    ShiftLeft (Local2, 0x02, Local2)
                    Store (FND4, Local4)
                    And (Local4, 0x73, Local4)
                    Or (Local3, Local2, Local3)
                    Or (Local3, Local4, FND4)
                    Sleep (0x012C)
                    Store (0x05, BSEL)
                    Store (FAN4, Local0)
                    Store (Zero, BSEL)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        OperationRegion (HWRE, SystemIO, IOHW, 0x0A)
        Field (HWRE, ByteAcc, NoLock, Preserve)
        {
            Offset (0x05), 
            HIDX,   8, 
            HDAT,   8
        }

        IndexField (HIDX, HDAT, ByteAcc, NoLock, Preserve)
        {
            Offset (0x04), 
            CHNM,   1, 
            CFNM,   1, 
            CHNS,   2, 
            CFNS,   2, 
            Offset (0x05), 
            SYST,   8, 
            TRGT,   8, 
            Offset (0x08), 
            SSDN,   8, 
            CSDN,   8, 
            SSUP,   8, 
            CSUP,   8, 
            Offset (0x20), 
            VCOR,   8, 
            V12V,   8, 
            Offset (0x23), 
            V33V,   8, 
            Offset (0x25), 
            V50V,   8, 
            Offset (0x27), 
            MBTE,   8, 
            FAN1,   8, 
            FAN2,   8, 
            FAN3,   8, 
            Offset (0x3F), 
            CFN3,   8, 
            Offset (0x47), 
            FDR1,   8, 
            Offset (0x4B), 
            FD13,   8, 
            FD15,   8, 
            Offset (0x4E), 
            BSEL,   3, 
            Offset (0x4F), 
            Offset (0x50), 
            TSR1,   8, 
                ,   7, 
            TSR2,   1, 
            Offset (0x53), 
            FAN4,   8, 
            Offset (0x59), 
            FND4,   8, 
            Offset (0x5D), 
            FD21,   8
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (CORV, Package (0x05)
        {
            0x06020000, 
            "Vcore Voltage", 
            0x0352, 
            0x0640, 
            One
        })
        Name (V3VV, Package (0x05)
        {
            0x06020001, 
            " +3.3 Voltage", 
            0x0B9A, 
            0x0E2E, 
            One
        })
        Name (V5VV, Package (0x05)
        {
            0x06020002, 
            " +5 Voltage", 
            0x1194, 
            0x157C, 
            One
        })
        Name (VV12, Package (0x05)
        {
            0x06020003, 
            " +12 Voltage", 
            0x27D8, 
            0x35E8, 
            One
        })
        Name (VPAR, Package (0x04)
        {
            Package (0x03)
            {
                Zero, 
                One, 
                Zero
            }, 

            Package (0x03)
            {
                0x22, 
                0x22, 
                Zero
            }, 

            Package (0x03)
            {
                0x16, 
                0x0A, 
                Zero
            }, 

            Package (0x03)
            {
                0x38, 
                0x0A, 
                Zero
            }
        })
        Name (VBUF, Package (0x05)
        {
            0x04, 
            CORV, 
            V3VV, 
            V5VV, 
            VV12
        })
        Method (VGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (^^SIOR.HWV0 ())
            }

            If (LEqual (Arg0, One))
            {
                Return (^^SIOR.HWV3 ())
            }

            If (LEqual (Arg0, 0x02))
            {
                Return (^^SIOR.HWV5 ())
            }

            If (LEqual (Arg0, 0x03))
            {
                Return (^^SIOR.HWV1 ())
            }
        }

        Name (CPUT, Package (0x05)
        {
            0x06030000, 
            "CPU Temperature", 
            0x0258, 
            0x03B6, 
            0x00010001
        })
        Name (MBTP, Package (0x05)
        {
            0x06030001, 
            "MB Temperature", 
            0x01C2, 
            0x03B6, 
            0x00010001
        })
        Name (TBUF, Package (0x03)
        {
            0x02, 
            CPUT, 
            MBTP
        })
        Method (TGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (^^SIOR.HWT1 ())
            }

            If (LEqual (Arg0, One))
            {
                Return (^^SIOR.HWT0 ())
            }
        }

        Name (CPUF, Package (0x05)
        {
            0x06040000, 
            "CPU FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (CHF1, Package (0x05)
        {
            0x06040001, 
            "CHASSIS1 FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (CHF2, Package (0x05)
        {
            0x06040002, 
            "CHASSIS2 FAN Speed", 
            0x04B0, 
            0x1C20, 
            0x00010001
        })
        Name (CHF3, Package (0x05)
        {
            0x06040003, 
            "CHASSIS3 FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (PWRF, Package (0x05)
        {
            0x06040004, 
            "POWER FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (FBUF, Package (0x06)
        {
            0x05, 
            CPUF, 
            CHF1, 
            CHF2, 
            CHF3, 
            PWRF
        })
        Method (FGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (^^SIOR.HWF1 ())
            }

            If (LEqual (Arg0, One))
            {
                Return (^^SIOR.HWF0 ())
            }

            If (LEqual (Arg0, 0x02))
            {
                Return (^^SIOR.HWF4 ())
            }

            If (LEqual (Arg0, 0x03))
            {
                Return (^^SIOR.HWF3 ())
            }

            If (LEqual (Arg0, 0x04))
            {
                Return (^^SIOR.HWF2 ())
            }
        }

        Method (VSIF, 0, NotSerialized)
        {
            Return (VBUF)
        }

        Method (RVLT, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (VGET (Local0), Local1)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), Zero)), Local2)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), One)), Local3)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), 0x02)), Local4)
            Multiply (Local1, Add (Local2, Local3), Local5)
            Divide (Local5, Local3, , Local5)
            Add (Local5, Local4, Local5)
            Return (Local5)
        }

        Method (SVLT, 1, NotSerialized)
        {
            And (DerefOf (Index (Arg0, Zero)), 0xFFFF, Local0)
            Store (DerefOf (Index (VBUF, Zero)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (Zero)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, One)), Index (DerefOf (Index (VBUF, Local0)), One))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (VBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (VBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (VBUF, Local0)), 0x04))
            Return (One)
        }

        Method (TSIF, 0, NotSerialized)
        {
            Return (TBUF)
        }

        Method (RTMP, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (TGET (Local0), Local1)
            Return (Local1)
        }

        Method (STMP, 1, NotSerialized)
        {
            Store (And (DerefOf (Index (Arg0, Zero)), 0xFFFF), Local0)
            Store (DerefOf (Index (TBUF, Zero)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (Zero)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, One)), Index (DerefOf (Index (TBUF, Local0)), One))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (TBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (TBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (TBUF, Local0)), 0x04))
            Return (One)
        }

        Method (FSIF, 0, NotSerialized)
        {
            Return (FBUF)
        }

        Method (RFAN, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (FGET (Local0), Local1)
            Return (Local1)
        }

        Method (SFAN, 1, NotSerialized)
        {
            And (DerefOf (Index (Arg0, Zero)), 0xFFFF, Local0)
            Store (DerefOf (Index (FBUF, Zero)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (Zero)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, One)), Index (DerefOf (Index (FBUF, Local0)), One))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (FBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (FBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (FBUF, Local0)), 0x04))
            Return (One)
        }
    }

    Scope (_SB.PCI0)
    {
        Device (GFX0)
        {
            Name (_ADR, 0x00020000)
            OperationRegion (IGDM, SystemMemory, 0x3EE9E0E4, 0x2000)
            Field (IGDM, AnyAcc, NoLock, Preserve)
            {
                SIGN,   128, 
                SIZE,   32, 
                OVER,   32, 
                SVER,   256, 
                VVER,   128, 
                GVER,   128, 
                MBOX,   32, 
                Offset (0xF0), 
                IBTT,   4, 
                IPSC,   2, 
                IPAT,   4, 
                IBIA,   3, 
                IBLC,   2, 
                Offset (0xF2), 
                ITVF,   4, 
                ITVM,   4, 
                IDVM,   1, 
                IDVS,   2, 
                ISSC,   1, 
                Offset (0xF4), 
                Offset (0x200), 
                SCIE,   1, 
                GEFC,   4, 
                GXFC,   3, 
                GESF,   8, 
                Offset (0x204), 
                PARM,   32
            }

            OperationRegion (TCOI, SystemIO, TOBS, 0x08)
            Field (TCOI, WordAcc, NoLock, Preserve)
            {
                Offset (0x04), 
                    ,   9, 
                SCIS,   1, 
                Offset (0x06)
            }

            Method (GSCI, 0, NotSerialized)
            {
                If (LEqual (GEFC, 0x04))
                {
                    Store (GBDA (), GXFC)
                }

                If (LEqual (GEFC, 0x06))
                {
                    Store (SBCB (), GXFC)
                }

                Store (One, SCIS)
                Store (Zero, GEFC)
                Store (Zero, GSSE)
                Store (Zero, SCIE)
                Return (Zero)
            }

            Method (GBDA, 0, NotSerialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (0x037B, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, One))
                {
                    Store (Zero, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x04))
                {
                    Name (LOOP, Zero)
                    And (PARM, 0xFFFFFF00, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x05))
                {
                    Store (IPSC, PARM)
                    Or (PARM, ShiftLeft (IPAT, 0x08), PARM)
                    Add (PARM, 0x0100, PARM)
                    Or (PARM, ShiftLeft (LIDS, 0x10), PARM)
                    XOr (PARM, 0x00010000, PARM)
                    Or (PARM, ShiftLeft (IBIA, 0x14), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x06))
                {
                    Store (ITVF, PARM)
                    Or (PARM, ShiftLeft (ITVM, 0x04), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x07))
                {
                    Name (MEMS, 0x0D)
                    Store (GIVD, PARM)
                    XOr (PARM, One, PARM)
                    Or (PARM, ShiftLeft (GMFN, One), PARM)
                    Or (PARM, 0x1000, PARM)
                    Or (ShiftLeft (CDCT, 0x15), PARM, PARM)
                    If (LEqual (IDVM, One))
                    {
                        Store (0x11, MEMS)
                    }

                    If (LLess (TASM, M512))
                    {
                        Or (PARM, ShiftLeft (One, MEMS), PARM)
                    }
                    Else
                    {
                        If (LLess (TASM, M1GB))
                        {
                            If (LLess (IDVS, 0x03))
                            {
                                Or (PARM, ShiftLeft (IDVS, MEMS), PARM)
                            }
                            Else
                            {
                                Or (PARM, ShiftLeft (0x02, MEMS), PARM)
                            }
                        }
                        Else
                        {
                            Or (PARM, ShiftLeft (IDVS, MEMS), PARM)
                        }
                    }

                    Store (One, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0A))
                {
                    Store (Zero, PARM)
                    If (ISSC)
                    {
                        Or (0x03, PARM)
                    }

                    Store (Zero, GESF)
                    Return (SUCC)
                }

                Store (Zero, GESF)
                Return (CRIT)
            }

            Method (SBCB, 0, NotSerialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (0x20, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, One))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x03))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x04))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x05))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x06))
                {
                    ShiftRight (PARM, 0x1C, Local0)
                    If (LEqual (Local0, Zero))
                    {
                        And (PARM, 0x0F, ITVF)
                        And (PARM, 0xF0, ITVM)
                        Store (Zero, GESF)
                        Return (SUCC)
                    }

                    Store (Zero, GESF)
                    Return (NVLD)
                }

                If (LEqual (GESF, 0x07))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x08))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x09))
                {
                    Store (CRIT, GXFC)
                    Return (Zero)
                }

                If (LEqual (GESF, 0x0A))
                {
                    ShiftRight (PARM, 0x1C, Local0)
                    If (LEqual (Local0, Zero))
                    {
                        And (PARM, 0xFF, IPSC)
                        Subtract (And (ShiftRight (PARM, 0x08), 0xFF), One, IPAT)
                        And (ShiftRight (PARM, 0x12), 0x03, IBLC)
                        And (ShiftRight (PARM, 0x14), 0x07, IBIA)
                    }

                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0B))
                {
                    If (LEqual (And (ShiftRight (PARM, 0x0B), 0x03), 0x02))
                    {
                        And (ShiftRight (PARM, 0x0D), 0x0F, Local0)
                        And (ShiftRight (PARM, 0x11), 0x0F, Local1)
                        If (Local0)
                        {
                            Store (Zero, IDVM)
                            Store (Local0, IDVS)
                        }

                        If (Local1)
                        {
                            Store (One, IDVM)
                            Store (Local1, IDVS)
                        }
                    }

                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x10))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x11))
                {
                    Or (PARM, ShiftLeft (LIDS, 0x08), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x12))
                {
                    And (PARM, One, ISSC)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x13))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                Store (Zero, GESF)
                Return (CRIT)
            }

            Scope (^^PCI0)
            {
                OperationRegion (MCHP, PCI_Config, 0x40, 0xC0)
                Field (MCHP, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x60), 
                    TASM,   10, 
                    Offset (0x62)
                }
            }

            OperationRegion (IGDP, PCI_Config, 0x40, 0xC0)
            Field (IGDP, AnyAcc, NoLock, Preserve)
            {
                Offset (0x12), 
                    ,   1, 
                GIVD,   1, 
                    ,   2, 
                GUMA,   3, 
                Offset (0x14), 
                    ,   4, 
                GMFN,   1, 
                Offset (0x18), 
                Offset (0x8C), 
                CDCT,   10, 
                Offset (0x8E), 
                Offset (0xA8), 
                GSSE,   1, 
                GSSB,   14, 
                GSES,   1, 
                Offset (0xBC), 
                ASLS,   32
            }

            Name (M512, 0x08)
            Name (M1GB, 0x10)
            Scope (\_GPE)
            {
                Method (_L06, 0, NotSerialized)
                {
                    \_SB.PCI0.GFX0.GSCI ()
                }
            }

            Name (OPBS, 0xFFFFFF00)
            Method (OPTS, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (ASLS, OPBS)
                }
            }

            Method (OWAK, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (OPBS, ASLS)
                    Store (One, GSES)
                }
            }
        }
    }

    Scope (_SB)
    {
        Scope (PCI0)
        {
            Name (CRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Address Space Granularity
                    0x0000,             // Address Range Minimum
                    0x00FF,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0x0100,             // Address Length
                    ,,)
                IO (Decode16,
                    0x0CF8,             // Address Range Minimum
                    0x0CF8,             // Address Range Maximum
                    0x01,               // Address Alignment
                    0x08,               // Address Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Address Space Granularity
                    0x0000,             // Address Range Minimum
                    0x0CF7,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0x0CF8,             // Address Length
                    ,,, TypeStatic)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Address Space Granularity
                    0x0D00,             // Address Range Minimum
                    0xFFFF,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0xF300,             // Address Length
                    ,,, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x000A0000,         // Address Range Minimum
                    0x000BFFFF,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00020000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x000C0000,         // Address Range Minimum
                    0x000DFFFF,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00020000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x00000000,         // Address Range Minimum
                    0x00000000,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00000000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
            })
            CreateDWordField (CRS, 0x5C, MIN5)
            CreateDWordField (CRS, 0x60, MAX5)
            CreateDWordField (CRS, 0x68, LEN5)
            CreateDWordField (CRS, 0x76, MIN6)
            CreateDWordField (CRS, 0x7A, MAX6)
            CreateDWordField (CRS, 0x82, LEN6)
            Method (_CRS, 0, NotSerialized)
            {
                Store (MG1L, Local0)
                If (Local0)
                {
                    Store (MG1B, MIN5)
                    Store (MG1L, LEN5)
                    Add (MIN5, Decrement (Local0), MAX5)
                }

                Store (MG2B, MIN6)
                Store (MG2L, LEN6)
                Store (MG2L, Local0)
                Add (MIN6, Decrement (Local0), MAX6)
                Return (CRS)
            }
        }
    }

    Name (WOTB, Zero)
    Name (WSSB, Zero)
    Name (WAXB, Zero)
    Method (_PTS, 1, NotSerialized)
    {
        Store (Arg0, DBG8)
        PTS (Arg0)
        Store (Zero, Index (WAKP, Zero))
        Store (Zero, Index (WAKP, One))
        If (LAnd (LEqual (Arg0, 0x04), LEqual (OSFL (), 0x02)))
        {
            Sleep (0x0BB8)
        }

        Store (ASSB, WSSB)
        Store (AOTB, WOTB)
        Store (AAXB, WAXB)
        Store (Arg0, ASSB)
        Store (OSFL (), AOTB)
        Store (Zero, AAXB)
    }

    Method (_WAK, 1, NotSerialized)
    {
        ShiftLeft (Arg0, 0x04, DBG8)
        WAK (Arg0)
        If (GNVS (0x8370)) {}
        Else
        {
            Notify (\_SB.PWRB, 0x02)
        }

        If (ASSB)
        {
            Store (WSSB, ASSB)
            Store (WOTB, AOTB)
            Store (WAXB, AAXB)
        }

        If (DerefOf (Index (WAKP, Zero)))
        {
            Store (Zero, Index (WAKP, One))
        }
        Else
        {
            Store (Arg0, Index (WAKP, One))
        }

        Return (WAKP)
    }

    OperationRegion (IORK, SystemIO, 0xB3, One)
    Field (IORK, ByteAcc, NoLock, Preserve)
    {
        IOWK,   8
    }

    Name (_S0, Package (0x04)
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    If (SS1)
    {
        Name (_S1, Package (0x04)
        {
            One, 
            Zero, 
            Zero, 
            Zero
        })
    }

    If (SS3)
    {
        Name (_S3, Package (0x04)
        {
            0x05, 
            Zero, 
            Zero, 
            Zero
        })
    }

    If (SS4)
    {
        Name (_S4, Package (0x04)
        {
            0x06, 
            Zero, 
            Zero, 
            Zero
        })
    }

    Name (_S5, Package (0x04)
    {
        0x07, 
        Zero, 
        Zero, 
        Zero
    })
    Method (PTS, 1, NotSerialized)
    {
        If (Arg0)
        {
            \_SB.PCI0.SBRG.SIOS (Arg0)
            \_SB.PCI0.NPTS (Arg0)
            \_SB.PCI0.SBRG.SPTS (Arg0)
            \_SB.PCI0.GFX0.OPTS (Arg0)
        }
    }

    Method (WAK, 1, NotSerialized)
    {
        \_SB.PCI0.SBRG.SIOW (Arg0)
        \_SB.PCI0.NWAK (Arg0)
        \_SB.PCI0.HWAK (Arg0)
        \_SB.PCI0.SBRG.SWAK (Arg0)
        \_SB.PCI0.GFX0.OWAK (Arg0)
    }
}

-------------- next part --------------
/*
  RSD PTR: OEM=ACPIAM, ACPI_Rev=1.0x (0)
	RSDT=0x3ee90000, cksum=15
 */
/*
  RSDT: Length=64, Revision=1, Checksum=236,
	OEMID=A M I, OEM Table ID=OEMRSDT, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
	Entries={ 0x3ee90200, 0x3ee90390, 0x3ee90400, 0x3ee9e040, 0x3ee99bb0, 0x3ee99be8, 0x3ee9e0c0 }
 */
/*
  FACP: Length=132, Revision=2, Checksum=108,
	OEMID=A M I, OEM Table ID=OEMFACP, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
 	FACS=0x3ee9e000, DSDT=0x3ee90440
	INT_MODEL=APIC
	Preferred_PM_Profile=Unspecified (0)
	SCI_INT=9
	SMI_CMD=0xb2, ACPI_ENABLE=0xe1, ACPI_DISABLE=0x1e, S4BIOS_REQ=0x0
	PSTATE_CNT=0xe2
	PM1a_EVT_BLK=0x800-0x803
	PM1a_CNT_BLK=0x804-0x805
	PM_TMR_BLK=0x808-0x80b
	GPE0_BLK=0x828-0x82f
	CST_CNT=0xe3
	P_LVL2_LAT=101 us, P_LVL3_LAT=1001 us
	FLUSH_SIZE=1024, FLUSH_STRIDE=16
	DUTY_OFFSET=1, DUTY_WIDTH=0
	DAY_ALRM=13, MON_ALRM=0, CENTURY=50
	IAPC_BOOT_ARCH={LEGACY_DEV,8042}
	Flags={WBINVD,PROC_C1,SLP_BUTTON,RTC_S4}
 */
/*
  FACS:	Length=64, HwSig=0x00000000, Firm_Wake_Vec=0x00000000
	Global_Lock=
	Flags=
	Version=1
 */
/*
  DSDT: Length=38763, Revision=1, Checksum=63,
	OEMID=A0579, OEM Table ID=A0579000, OEM Revision=0x0,
	Creator ID=INTL, Creator Revision=0x20060113
 */
/*
  APIC: Length=108, Revision=1, Checksum=33,
	OEMID=A M I, OEM Table ID=OEMAPIC, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
	Local APIC ADDR=0xfee00000
	Flags={PC-AT}

	Type=Local APIC
	ACPI CPU=1
	Flags={ENABLED}
	APIC ID=0

	Type=Local APIC
	ACPI CPU=2
	Flags={ENABLED}
	APIC ID=1

	Type=Local APIC
	ACPI CPU=3
	Flags={DISABLED}
	APIC ID=130

	Type=Local APIC
	ACPI CPU=4
	Flags={DISABLED}
	APIC ID=131

	Type=IO APIC
	APIC ID=2
	INT BASE=0
	ADDR=0x00000000fec00000

	Type=INT Override
	BUS=0
	IRQ=0
	INTR=2
	Flags={Polarity=conforming, Trigger=conforming}

	Type=INT Override
	BUS=0
	IRQ=9
	INTR=9
	Flags={Polarity=active-hi, Trigger=level}
 */
/*
  MCFG: Length=60, Revision=1, Checksum=137,
	OEMID=A M I, OEM Table ID=OEMMCFG, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97

	Base Address= 0x00000000e0000000
	Segment Group= 0x0000
	Start Bus= 0
	End Bus= 255
 */
/*
  HPET: Length=56, Revision=1, Checksum=159,
	OEMID=A M I, OEM Table ID=OEMHPET, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
	HPET Number=0
	ADDR=0x00000800
	HW Rev=0x2
	Comparitors=2
	Counter Size=1
	Legacy IRQ routing capable={TRUE}
	PCI Vendor ID=0x8086
	Minimal Tick=14318
 */
/*
  ASF!: Length=153, Revision=32, Checksum=10,
	OEMID=LEGEND, OEM Table ID=I865PASF, OEM Revision=0x1,
	Creator ID=INTL, Creator Revision=0x20060113
 */
/*
  GSCI: Length=8228, Revision=1, Checksum=58,
	OEMID=A M I, OEM Table ID=GMCHSCI, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
 */
-------------- next part --------------
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20051021
 *
 * Disassembly of /tmp/acpidump.p9vSsg, Wed Jan 17 08:17:33 2007
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "A0579", "A0579000", 0x00000000)
{
    Scope (_PR)
    {
        Processor (CPU1, 0x01, 0x00000810, 0x06)
        {
            OperationRegion (STBL, SystemMemory, 0x3EE99C90, 0x02E3)
            Name (NCPU, 0x02)
            Name (CFGD, 0x09)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                OperationRegion (PMRG, SystemIO, PMBS, 0x50)
                Field (PMRG, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x41), 
                    DEV4,   1, 
                    DEV5,   1, 
                    DEV6,   1, 
                    DEV7,   1, 
                    STS4,   1, 
                    STS5,   1, 
                    STS6,   1, 
                    STS7,   1
                }

                Store (One, STS7)
                Store (One, DEV7)
                If (LEqual (TBLD, Zero))
                {
                    Load (STBL, HNDL)
                    Store (One, TBLD)
                }
            }
        }
    }

    Scope (_PR)
    {
        Processor (CPU2, 0x02, 0x00000810, 0x06)
        {
            OperationRegion (STBL, SystemMemory, 0x3EE99F80, 0x02DA)
            Name (NCPU, 0x02)
            Name (CFGD, 0x09)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                If (LEqual (TBLD, Zero))
                {
                    Load (STBL, HNDL)
                    Store (One, TBLD)
                }
            }
        }
    }

    Scope (_PR)
    {
        Processor (CPU3, 0x03, 0x00000000, 0x00)
        {
            OperationRegion (STBL, SystemMemory, 0xFFFF0000, 0xFFFF)
            Name (NCPU, 0x80)
            Name (CFGD, 0x80)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                If (LEqual (TBLD, Zero))
                {
                    If (LAnd (LEqual (And (TYPE, One), One), LNot (LGreater (NCPU, 0x08))))
                    {
                        Load (STBL, HNDL)
                        Store (One, TBLD)
                    }
                }
            }
        }
    }

    Scope (_PR)
    {
        Processor (CPU4, 0x04, 0x00000000, 0x00)
        {
            OperationRegion (STBL, SystemMemory, 0xFFFF0000, 0xFFFF)
            Name (NCPU, 0x80)
            Name (CFGD, 0x80)
            Name (TYPE, 0x80000000)
            Name (HNDL, 0x80000000)
            Name (TBLD, Zero)
            Method (_PDC, 1, NotSerialized)
            {
                CreateDWordField (Arg0, 0x08, DAT0)
                Store (DAT0, TYPE)
                OperationRegion (PMRG, SystemIO, PMBS, 0x50)
                Field (PMRG, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x41), 
                    DEV4,   1, 
                    DEV5,   1, 
                    DEV6,   1, 
                    DEV7,   1, 
                    STS4,   1, 
                    STS5,   1, 
                    STS6,   1, 
                    STS7,   1
                }

                If (LEqual (TBLD, Zero))
                {
                    If (LAnd (LEqual (And (TYPE, One), One), LNot (LGreater (NCPU, 0x08))))
                    {
                        Store (One, STS6)
                        Store (One, DEV6)
                        Load (STBL, HNDL)
                        Store (One, TBLD)
                    }
                }
            }
        }
    }

    Name (DP80, 0x80)
    Name (DP90, 0x90)
    Name (SPIO, 0x2E)
    Name (IOHW, 0x0290)
    Name (APIC, One)
    Name (SMIP, 0xB2)
    Name (PMBS, 0x0800)
    Name (PMLN, 0x80)
    Name (GPBS, 0x0480)
    Name (GPLN, 0x40)
    Name (SMBL, Zero)
    Name (PM30, 0x0830)
    Name (SUSW, 0xFF)
    Name (HTBA, 0xFED1F404)
    Name (EAQF, One)
    Name (CFTE, Zero)
    Name (TOBS, 0x0860)
    Name (SUCC, One)
    Name (NVLD, 0x02)
    Name (CRIT, 0x04)
    Name (NCRT, 0x06)
    Name (LIDS, One)
    Name (PCIB, 0xE0000000)
    Name (PCIL, 0x10000000)
    Name (SMBS, 0x0400)
    Name (CPUC, 0x04)
    OperationRegion (BIOS, SystemMemory, 0x3EE9E064, 0xFF)
    Field (BIOS, ByteAcc, NoLock, Preserve)
    {
        SS1,    1, 
        SS2,    1, 
        SS3,    1, 
        SS4,    1, 
        Offset (0x01), 
        IOST,   16, 
        TOPM,   32, 
        ROMS,   32, 
        MG1B,   32, 
        MG1L,   32, 
        MG2B,   32, 
        MG2L,   32, 
        Offset (0x1C), 
        CPB0,   32, 
        CPB1,   32, 
        CPB2,   32, 
        CPB3,   32, 
        ASSB,   8, 
        AOTB,   8, 
        AAXB,   32, 
        MSC1,   32, 
        MSC2,   32, 
        MSC3,   32, 
        MSC4,   32, 
        MSC5,   32, 
        MSC6,   32, 
        MSC7,   32, 
        MSC8,   32, 
        DMAX,   8, 
        HPTA,   32
    }

    Method (RRIO, 4, NotSerialized)
    {
        Store ("RRIO", Debug)
    }

    Method (RDMA, 3, NotSerialized)
    {
        Store ("rDMA", Debug)
    }

    Name (PICM, Zero)
    Method (_PIC, 1, NotSerialized)
    {
        If (Arg0)
        {
            Store (0xAA, DBG8)
        }
        Else
        {
            Store (0xAC, DBG8)
        }

        Store (Arg0, PICM)
    }

    Name (OSVR, Ones)
    Method (OSFL, 0, NotSerialized)
    {
        If (LNot (LEqual (OSVR, Ones)))
        {
            Return (OSVR)
        }

        If (LEqual (PICM, Zero))
        {
            Store (0xAC, DBG8)
        }

        Store (One, OSVR)
        If (CondRefOf (_OSI, Local1))
        {
            If (_OSI ("Windows 2001"))
            {
                Store (Zero, OSVR)
            }
        }
        Else
        {
            If (MCTH (_OS, "Microsoft Windows NT"))
            {
                Store (0x04, OSVR)
            }
            Else
            {
                If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
                {
                    Store (0x02, OSVR)
                }

                If (MCTH (_OS, "Linux"))
                {
                    Store (0x03, OSVR)
                }
            }
        }

        Return (OSVR)
    }

    Method (MCTH, 2, NotSerialized)
    {
        If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
        {
            Return (Zero)
        }

        Add (SizeOf (Arg0), One, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
            If (LNot (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (BUF1, Local0)))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

    Name (PRWP, Package (0x02)
    {
        Zero, 
        Zero
    })
    Method (GPRW, 2, NotSerialized)
    {
        Store (Arg0, Index (PRWP, Zero))
        Store (ShiftLeft (SS1, One), Local0)
        Or (Local0, ShiftLeft (SS2, 0x02), Local0)
        Or (Local0, ShiftLeft (SS3, 0x03), Local0)
        Or (Local0, ShiftLeft (SS4, 0x04), Local0)
        If (And (ShiftLeft (One, Arg1), Local0))
        {
            Store (Arg1, Index (PRWP, One))
        }
        Else
        {
            ShiftRight (Local0, One, Local0)
            If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
            {
                FindSetLeftBit (Local0, Index (PRWP, One))
            }
            Else
            {
                FindSetRightBit (Local0, Index (PRWP, One))
            }
        }

        Return (PRWP)
    }

    Name (WAKP, Package (0x02)
    {
        Zero, 
        Zero
    })
    OperationRegion (DEBX, SystemIO, 0x80, 0x02)
    Field (DEBX, WordAcc, NoLock, Preserve)
    {
        DBGX,   16
    }

    OperationRegion (DEB0, SystemIO, DP80, One)
    Field (DEB0, ByteAcc, NoLock, Preserve)
    {
        DBG8,   8
    }

    OperationRegion (DEB1, SystemIO, DP90, 0x02)
    Field (DEB1, WordAcc, NoLock, Preserve)
    {
        DBG9,   16
    }

    Scope (_SB)
    {
        Name (PR00, Package (0x18)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                Zero, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                Zero, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x03, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                One, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                LNKA, 
                Zero
            }
        })
        Name (AR00, Package (0x18)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                Zero, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                One, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                Zero, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                Zero, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                One, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x03, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                One, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x03, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                Zero, 
                0x10
            }
        })
        Name (PR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x13
            }
        })
        Name (PR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x13
            }
        })
        Name (PR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x10
            }
        })
        Name (PR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                Zero
            }
        })
        Name (AR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x11
            }
        })
        Name (PR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                Zero
            }
        })
        Name (AR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x12
            }
        })
        Name (PR08, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR08, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x13
            }
        })
        Name (PR09, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR09, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x10
            }
        })
        Name (PR01, Package (0x0E)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x02, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x03, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0004FFFF, 
                Zero, 
                LNKD, 
                Zero
            }
        })
        Name (AR01, Package (0x0E)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x02, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x03, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0004FFFF, 
                Zero, 
                Zero, 
                0x13
            }
        })
        Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared)
                {3,4,5,6,7,10,11,12,14,15}
        })
        Alias (PRSA, PRSB)
        Alias (PRSA, PRSC)
        Alias (PRSA, PRSD)
        Alias (PRSA, PRSE)
        Alias (PRSA, PRSF)
        Alias (PRSA, PRSG)
        Alias (PRSA, PRSH)
        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08"))
            Name (_ADR, Zero)
            Method (^BN00, 0, NotSerialized)
            {
                Return (Zero)
            }

            Method (_BBN, 0, NotSerialized)
            {
                Return (BN00 ())
            }

            Name (_UID, Zero)
            Method (_PRT, 0, NotSerialized)
            {
                If (PICM)
                {
                    Return (AR00)
                }

                Return (PR00)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                {
                    Return (0x02)
                }
                Else
                {
                    Return (0x03)
                }
            }

            Name (_CID, 0x030AD041)
            Device (MCH)
            {
                Name (_HID, EisaId ("PNP0C01"))
                Name (_UID, 0x0A)
                Name (_CRS, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED14000,         // Address Base
                        0x00006000,         // Address Length
                        )
                })
            }

            Method (NPTS, 1, NotSerialized)
            {
            }

            Method (NWAK, 1, NotSerialized)
            {
            }

            Device (P0P2)
            {
                Name (_ADR, 0x00010000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR02)
                    }

                    Return (PR02)
                }
            }

            Device (P0P1)
            {
                Name (_ADR, 0x001E0000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0B, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR01)
                    }

                    Return (PR01)
                }
            }

            Device (SBRG)
            {
                Name (_ADR, 0x001F0000)
                Device (IELK)
                {
                    Name (_HID, "AWY0001")
                    OperationRegion (RXA0, PCI_Config, 0xA0, 0x20)
                    Field (RXA0, ByteAcc, NoLock, Preserve)
                    {
                            ,   9, 
                        PBLV,   1, 
                        Offset (0x10), 
                            ,   1, 
                        PBMS,   1, 
                            ,   1, 
                        PMCS,   1, 
                        ECNS,   1, 
                        Offset (0x11), 
                        ECT1,   16, 
                        ELEN,   1, 
                        Offset (0x14)
                    }

                    Method (\_GPE._L0A, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.SBRG.IELK, 0x81)
                        Store (One, \_SB.PCI0.SBRG.IELK.PMCS)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        If (ELEN)
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Method (SMOD, 1, NotSerialized)
                    {
                    }

                    Method (GPBS, 0, NotSerialized)
                    {
                        Return (XOr (PBLV, One))
                    }
                }

                Method (SPTS, 1, NotSerialized)
                {
                    Store (One, PS1S)
                    Store (One, PS1E)
                    Store (One, SLPS)
                }

                Method (SWAK, 1, NotSerialized)
                {
                    Store (Zero, SLPS)
                    Store (Zero, PS1E)
                    If (LAnd (LEqual (Arg0, One), RTCS))
                    {
                        Notify (PWRB, 0x02)
                    }
                    Else
                    {
                        If (LAnd (LEqual (Arg0, 0x03), BRTC)) {}
                        Else
                        {
                            Notify (PWRB, 0x02)
                        }
                    }
                }

                OperationRegion (APMP, SystemIO, SMIP, 0x02)
                Field (APMP, ByteAcc, NoLock, Preserve)
                {
                    APMC,   8, 
                    APMS,   8
                }

                Field (APMP, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x01), 
                        ,   1, 
                    BRTC,   1
                }

                OperationRegion (PMS0, SystemIO, PMBS, 0x04)
                Field (PMS0, ByteAcc, NoLock, Preserve)
                {
                        ,   10, 
                    RTCS,   1, 
                        ,   4, 
                    WAKS,   1, 
                    Offset (0x03), 
                    PWBT,   1, 
                    Offset (0x04)
                }

                OperationRegion (SMIE, SystemIO, PM30, 0x08)
                Field (SMIE, ByteAcc, NoLock, Preserve)
                {
                        ,   4, 
                    PS1E,   1, 
                        ,   31, 
                    PS1S,   1, 
                    Offset (0x08)
                }

                Scope (\_SB)
                {
                    Name (SLPS, Zero)
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Address Range Minimum
                            0x0020,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x00A0,             // Address Range Minimum
                            0x00A0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

                Device (DMAD)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        DMA (Compatibility, BusMaster, Transfer8)
                            {4}
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x0081,             // Address Range Minimum
                            0x0081,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0087,             // Address Range Minimum
                            0x0087,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0089,             // Address Range Minimum
                            0x0089,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x008F,             // Address Range Minimum
                            0x008F,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x00C0,             // Address Range Minimum
                            0x00C0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x20,               // Address Length
                            )
                    })
                }

                Device (TMR)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Address Range Minimum
                            0x0040,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x04,               // Address Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                }

                Device (RTC0)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Address Range Minimum
                            0x0070,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                }

                Device (SPKR)
                {
                    Name (_HID, EisaId ("PNP0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0061,             // Address Range Minimum
                            0x0061,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                    })
                }

                Device (COPR)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x00F0,             // Address Range Minimum
                            0x00F0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (UAR1)
                {
                    Name (_UID, One)
                    Name (_HID, EisaId ("PNP0501"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (Zero))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (Zero, Zero)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (DCRS (Zero, Zero))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        DSRS (Arg0, Zero)
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (CMPR)
                    }

                    Name (CMPR, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16,
                                0x03F8,             // Address Range Minimum
                                0x03F8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {4}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x03F8,             // Address Range Minimum
                                0x03F8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x02F8,             // Address Range Minimum
                                0x02F8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x03E8,             // Address Range Minimum
                                0x03E8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x02E8,             // Address Range Minimum
                                0x02E8,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x08,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {}
                        }
                        EndDependentFn ()
                    })
                }

                Method (UAR1._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x08, 0x04))
                }

                Device (FDC)
                {
                    Name (_HID, EisaId ("PNP0700"))
                    Method (_FDE, 0, NotSerialized)
                    {
                        Name (FDEP, Package (0x05)
                        {
                            Zero, 
                            Zero, 
                            0x02, 
                            0x02, 
                            0x02
                        })
                        If (_STA ())
                        {
                            Store (One, Index (FDEP, Zero))
                        }

                        Return (FDEP)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (0x03))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (0x03, Zero)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        DCRS (0x03, One)
                        Store (IRQM, IRQE)
                        Store (DMAM, DMAE)
                        Store (IO11, IO21)
                        Store (IO12, IO22)
                        Store (0x06, LEN2)
                        Add (IO21, 0x07, IO31)
                        Store (IO31, IO32)
                        Store (One, LEN3)
                        Return (CRS2)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        DSRS (Arg0, 0x03)
                        CreateWordField (Arg0, One, IRQE)
                        CreateByteField (Arg0, 0x04, DMAE)
                        ENFG (CGLD (0x03))
                        If (IRQE)
                        {
                            FindSetRightBit (IRQE, Local0)
                            Subtract (Local0, One, INTR)
                        }
                        Else
                        {
                            Store (Zero, INTR)
                        }

                        If (DMAE)
                        {
                            FindSetRightBit (DMAE, Local0)
                            Subtract (Local0, One, DMCH)
                        }
                        Else
                        {
                            Store (0x04, DMCH)
                        }

                        EXFG ()
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16,
                                0x03F0,             // Address Range Minimum
                                0x03F0,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x06,               // Address Length
                                )
                            IO (Decode16,
                                0x03F7,             // Address Range Minimum
                                0x03F7,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x01,               // Address Length
                                )
                            IRQNoFlags ()
                                {6}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {2}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x03F0,             // Address Range Minimum
                                0x03F0,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x06,               // Address Length
                                )
                            IO (Decode16,
                                0x03F7,             // Address Range Minimum
                                0x03F7,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x01,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x0370,             // Address Range Minimum
                                0x0370,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x06,               // Address Length
                                )
                            IO (Decode16,
                                0x0377,             // Address Range Minimum
                                0x0377,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x01,               // Address Length
                                )
                            IRQNoFlags ()
                                {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8)
                                {0,1,2,3}
                        }
                        EndDependentFn ()
                    })
                }

                Device (SIOR)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Method (_UID, 0, NotSerialized)
                    {
                        Return (SPIO)
                    }

                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0290,             // Address Range Minimum
                            0x0290,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x08,               // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        If (LAnd (LNot (LEqual (SPIO, 0x03F0)), LGreater (SPIO, 0xF0)))
                        {
                            CreateWordField (CRS, 0x02, GP10)
                            CreateWordField (CRS, 0x04, GP11)
                            CreateByteField (CRS, 0x07, GPL1)
                            Store (SPIO, GP10)
                            Store (SPIO, GP11)
                            Store (0x02, GPL1)
                        }

                        Return (CRS)
                    }
                }

                Name (DCAT, Package (0x15)
                {
                    0x02, 
                    0x03, 
                    One, 
                    Zero, 
                    0xFF, 
                    0x07, 
                    0xFF, 
                    0xFF, 
                    0x07, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0x07, 
                    0x08, 
                    0x09, 
                    0xFF, 
                    0xFF
                })
                Mutex (IOCF, 0x00)
                Method (ENFG, 1, NotSerialized)
                {
                    Acquire (IOCF, 0xFFFF)
                    Store (0x87, INDX)
                    Store (0x87, INDX)
                    Store (Arg0, LDN)
                }

                Method (EXFG, 0, NotSerialized)
                {
                    Store (0xAA, INDX)
                    Release (IOCF)
                }

                Method (LPTM, 1, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    And (OPT0, 0x02, Local0)
                    EXFG ()
                    Return (Local0)
                }

                Method (UHID, 1, NotSerialized)
                {
                    If (LEqual (Arg0, One))
                    {
                        ENFG (CGLD (Arg0))
                        And (OPT1, 0x38, Local0)
                        EXFG ()
                        If (Local0)
                        {
                            Return (0x1005D041)
                        }
                    }

                    Return (0x0105D041)
                }

                Method (SIOK, 1, NotSerialized)
                {
                    ENFG (0x0A)
                    If (LGreater (Arg0, One))
                    {
                        Or (CRE4, 0x10, CRE4)
                    }

                    Store (CRE3, Local0)
                    EXFG ()
                }

                Method (SIOS, 1, NotSerialized)
                {
                    Store ("SIOS", Debug)
                    SIOK (Arg0)
                }

                Method (SIOW, 1, NotSerialized)
                {
                    Store ("SIOW", Debug)
                    SIOK (Zero)
                }

                Method (SIOH, 0, NotSerialized)
                {
                    Store ("SIOH", Debug)
                    ENFG (0x0A)
                    If (And (OPT3, 0x10))
                    {
                        Notify (PS2K, 0x02)
                    }

                    If (And (OPT3, 0x20))
                    {
                        Notify (PS2M, 0x02)
                    }

                    EXFG ()
                    SIOK (Zero)
                }

                OperationRegion (IOID, SystemIO, SPIO, 0x02)
                Field (IOID, ByteAcc, NoLock, Preserve)
                {
                    INDX,   8, 
                    DATA,   8
                }

                IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x07), 
                    LDN,    8, 
                    Offset (0x22), 
                    FDCP,   1, 
                        ,   2, 
                    LPTP,   1, 
                    URAP,   1, 
                    URBP,   1, 
                    Offset (0x30), 
                    ACTR,   8, 
                    Offset (0x60), 
                    IOAH,   8, 
                    IOAL,   8, 
                    IOH2,   8, 
                    IOL2,   8, 
                    Offset (0x70), 
                    INTR,   4, 
                    Offset (0x74), 
                    DMCH,   3, 
                    Offset (0xE0), 
                    CRE0,   8, 
                    CRE1,   8, 
                    CRE2,   8, 
                    CRE3,   8, 
                    CRE4,   8, 
                    CRE5,   8, 
                    CRE6,   8, 
                    Offset (0xF0), 
                    OPT0,   8, 
                    OPT1,   8, 
                    OPT2,   8, 
                    OPT3,   8, 
                    Offset (0xF5), 
                    OPT5,   8, 
                    OPT6,   8, 
                    Offset (0xF9), 
                    OPT9,   8
                }

                Method (CGLD, 1, NotSerialized)
                {
                    Return (DerefOf (Index (DCAT, Arg0)))
                }

                Method (DSTA, 1, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    Store (ACTR, Local0)
                    EXFG ()
                    If (LEqual (Local0, 0xFF))
                    {
                        Return (Zero)
                    }

                    If (LEqual (Arg0, 0x05))
                    {
                        ShiftRight (Local0, 0x02, Local0)
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        ShiftRight (Local0, One, Local0)
                    }

                    And (Local0, One, Local0)
                    Or (IOST, ShiftLeft (Local0, Arg0), IOST)
                    If (Local0)
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        If (And (ShiftLeft (One, Arg0), IOST))
                        {
                            Return (0x0D)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                }

                Method (DCNT, 2, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    If (LEqual (Arg0, 0x05))
                    {
                        ShiftLeft (IOH2, 0x08, Local1)
                        Or (IOL2, Local1, Local1)
                    }
                    Else
                    {
                        ShiftLeft (IOAH, 0x08, Local1)
                        Or (IOAL, Local1, Local1)
                    }

                    RRIO (Arg0, Arg1, Local1, 0x08)
                    If (LAnd (LLess (DMCH, 0x04), LNot (LEqual (And (DMCH, 0x03, Local1), Zero))))
                    {
                        RDMA (Arg0, Arg1, Increment (Local1))
                    }

                    Store (Arg1, Local1)
                    Store (One, Local2)
                    If (LEqual (Arg0, 0x05))
                    {
                        ShiftLeft (Arg1, 0x02, Local1)
                        ShiftLeft (Local2, 0x02, Local2)
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        ShiftLeft (Arg1, One, Local1)
                        ShiftLeft (Local2, One, Local2)
                    }

                    Store (ACTR, Local0)
                    Not (Local2, Local3)
                    And (Local0, Local3, Local0)
                    Or (Local0, Local1, Local0)
                    Store (Local0, ACTR)
                    EXFG ()
                }

                Name (CRS1, ResourceTemplate ()
                {
                    IRQNoFlags ()
                        {}
                    DMA (Compatibility, NotBusMaster, Transfer8)
                        {}
                    IO (Decode16,
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x01,               // Address Alignment
                        0x00,               // Address Length
                        )
                })
                CreateWordField (CRS1, One, IRQM)
                CreateByteField (CRS1, 0x04, DMAM)
                CreateWordField (CRS1, 0x08, IO11)
                CreateWordField (CRS1, 0x0A, IO12)
                CreateByteField (CRS1, 0x0D, LEN1)
                Name (CRS2, ResourceTemplate ()
                {
                    IRQNoFlags ()
                        {6}
                    DMA (Compatibility, NotBusMaster, Transfer8)
                        {2}
                    IO (Decode16,
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x01,               // Address Alignment
                        0x00,               // Address Length
                        )
                    IO (Decode16,
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x01,               // Address Alignment
                        0x00,               // Address Length
                        )
                })
                CreateWordField (CRS2, One, IRQE)
                CreateByteField (CRS2, 0x04, DMAE)
                CreateWordField (CRS2, 0x08, IO21)
                CreateWordField (CRS2, 0x0A, IO22)
                CreateByteField (CRS2, 0x0D, LEN2)
                CreateWordField (CRS2, 0x10, IO31)
                CreateWordField (CRS2, 0x12, IO32)
                CreateByteField (CRS2, 0x15, LEN3)
                Method (DCRS, 2, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    ShiftLeft (IOAH, 0x08, IO11)
                    Or (IOAL, IO11, IO11)
                    Store (IO11, IO12)
                    Subtract (FindSetRightBit (IO11), One, Local0)
                    ShiftLeft (One, Local0, LEN1)
                    If (INTR)
                    {
                        ShiftLeft (One, INTR, IRQM)
                    }
                    Else
                    {
                        Store (Zero, IRQM)
                    }

                    If (LOr (LGreater (DMCH, 0x03), LEqual (Arg1, Zero)))
                    {
                        Store (Zero, DMAM)
                    }
                    Else
                    {
                        And (DMCH, 0x03, Local1)
                        ShiftLeft (One, Local1, DMAM)
                    }

                    EXFG ()
                    Return (CRS1)
                }

                Method (DSRS, 2, NotSerialized)
                {
                    CreateWordField (Arg0, One, IRQM)
                    CreateByteField (Arg0, 0x04, DMAM)
                    CreateWordField (Arg0, 0x08, IO11)
                    ENFG (CGLD (Arg1))
                    And (IO11, 0xFF, IOAL)
                    ShiftRight (IO11, 0x08, IOAH)
                    If (IRQM)
                    {
                        FindSetRightBit (IRQM, Local0)
                        Subtract (Local0, One, INTR)
                    }
                    Else
                    {
                        Store (Zero, INTR)
                    }

                    If (DMAM)
                    {
                        FindSetRightBit (DMAM, Local0)
                        Subtract (Local0, One, DMCH)
                    }
                    Else
                    {
                        Store (0x07, DMCH)
                    }

                    EXFG ()
                    DCNT (Arg1, One)
                }

                Device (RMSC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x10)
                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0010,             // Address Range Minimum
                            0x0010,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x0022,             // Address Range Minimum
                            0x0022,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x1E,               // Address Length
                            )
                        IO (Decode16,
                            0x0044,             // Address Range Minimum
                            0x0044,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x1C,               // Address Length
                            )
                        IO (Decode16,
                            0x0062,             // Address Range Minimum
                            0x0062,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0065,             // Address Range Minimum
                            0x0065,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x0B,               // Address Length
                            )
                        IO (Decode16,
                            0x0072,             // Address Range Minimum
                            0x0072,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x0E,               // Address Length
                            )
                        IO (Decode16,
                            0x0080,             // Address Range Minimum
                            0x0080,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0084,             // Address Range Minimum
                            0x0084,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0088,             // Address Range Minimum
                            0x0088,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x008C,             // Address Range Minimum
                            0x008C,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0090,             // Address Range Minimum
                            0x0090,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x00A2,             // Address Range Minimum
                            0x00A2,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x1E,               // Address Length
                            )
                        IO (Decode16,
                            0x00E0,             // Address Range Minimum
                            0x00E0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x04D0,             // Address Range Minimum
                            0x04D0,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x00,               // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED1C000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED20000,         // Address Base
                            0x00070000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFF9FA000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFFF00000,         // Address Base
                            0x000FFFFF,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateWordField (CRS, 0x72, GP00)
                        CreateWordField (CRS, 0x74, GP01)
                        CreateByteField (CRS, 0x77, GP0L)
                        Store (PMBS, GP00)
                        Store (PMBS, GP01)
                        Store (PMLN, GP0L)
                        If (SMBS)
                        {
                            CreateWordField (CRS, 0x7A, GP10)
                            CreateWordField (CRS, 0x7C, GP11)
                            CreateByteField (CRS, 0x7F, GP1L)
                            Store (SMBS, GP10)
                            Store (SMBS, GP11)
                            Store (SMBL, GP1L)
                        }

                        If (GPBS)
                        {
                            CreateWordField (CRS, 0x82, GP20)
                            CreateWordField (CRS, 0x84, GP21)
                            CreateByteField (CRS, 0x87, GP2L)
                            Store (GPBS, GP20)
                            Store (GPBS, GP21)
                            Store (GPLN, GP2L)
                        }

                        Return (CRS)
                    }
                }

                Scope (\_SB.PCI0.SBRG)
                {
                    Device (ASOC)
                    {
                        Name (_HID, "ATK0110")
                        Name (_UID, 0x01010110)
                        Method (_STA, 0, NotSerialized)
                        {
                            Return (0x0F)
                        }

                        Method (_INI, 0, NotSerialized)
                        {
                            Name (_T_0, Zero)
                            Store (GNVS (0x3774), _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                Store (0xA6, Index (G3T0, 0x03))
                            }
                            Else
                            {
                                If (LEqual (_T_0, One))
                                {
                                    Store (0x21, Index (G3T0, 0x03))
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x02))
                                    {
                                        Store (0x42, Index (G3T0, 0x03))
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x03))
                                        {
                                            Store (0x64, Index (G3T0, 0x03))
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x04))
                                            {
                                                Store (0xE9, Index (G3T0, 0x03))
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x05))
                                                {
                                                    Store (Zero, Index (G3T0, 0x03))
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x06))
                                                    {
                                                        Store (0x012C, Index (G3T0, 0x03))
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            Store (Subtract (GNVS (0x66B9), 0x06), Index (G3T2, 0x03))
                        }

                        Name (MBIF, Package (0x08)
                        {
                            0x03, 
                            "P5B-V", 
                            0x01010101, 
                            0x01010101, 
                            0xE0000001, 
                            Zero, 
                            Zero, 
                            Zero
                        })
                        Name (ASBF, Buffer (0x08)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        CreateDWordField (ASBF, Zero, ASB0)
                        CreateDWordField (ASBF, 0x04, ASB1)
                        Method (GGRP, 1, Serialized)
                        {
                            Name (_T_0, Zero)
                            Store (Arg0, _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                Return (GRP0)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    Return (GRP3)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        Store (GNVS (0x1787), Local0)
                                        If (LEqual (Local0, One))
                                        {
                                            Return (GR41)
                                        }
                                        Else
                                        {
                                            Return (GR42)
                                        }
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            Return (GRP5)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                Return (GRP6)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x08))
                                                {
                                                    Return (GRP8)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x09))
                                                    {
                                                        Return (GRP9)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x0A))
                                                        {
                                                            Return (GRPA)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0B))
                                                            {
                                                                Return (GRPB)
                                                            }
                                                            Else
                                                            {
                                                                Return (Zero)
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Method (GITM, 1, Serialized)
                        {
                            CreateDWordField (Arg0, Zero, PRM0)
                            CreateByteField (Arg0, 0x03, GPID)
                            Store (One, ASB0)
                            Name (_T_0, Zero)
                            Store (GPID, _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                GIT0 (PRM0)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    GIT3 (PRM0)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        GIT4 (PRM0)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            GIT5 (PRM0)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                GIT6 (PRM0)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x08))
                                                {
                                                    GIT8 (PRM0)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x09))
                                                    {
                                                        GIT9 (PRM0)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x0A))
                                                        {
                                                            GITA (PRM0)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0B))
                                                            {
                                                                GITB (PRM0)
                                                            }
                                                            Else
                                                            {
                                                                Store (Zero, ASB0)
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            Return (ASBF)
                        }

                        Method (SITM, 1, Serialized)
                        {
                            CreateDWordField (Arg0, Zero, PRM0)
                            CreateDWordField (Arg0, 0x04, PRM1)
                            CreateDWordField (Arg0, 0x08, PRM2)
                            CreateByteField (Arg0, 0x03, GPID)
                            Store (One, ASB0)
                            Name (_T_0, Zero)
                            Store (GPID, _T_0)
                            If (LEqual (_T_0, Zero))
                            {
                                SIT0 (PRM0, PRM1, PRM2)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    SIT3 (PRM0, PRM1, PRM2)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        SIT4 (PRM0, PRM1, PRM2)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            SIT5 (PRM0, PRM1, PRM2)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                SIT6 (PRM0, PRM1, PRM2)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x08))
                                                {
                                                    SIT8 (PRM0, PRM1, PRM2)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x09))
                                                    {
                                                        SIT9 (PRM0, PRM1, PRM2)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x0A))
                                                        {
                                                            SITA (PRM0, PRM1, PRM2)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0B))
                                                            {
                                                                SITB (PRM0, PRM1, PRM2)
                                                            }
                                                            Else
                                                            {
                                                                Store (Zero, ASB0)
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            Return (ASBF)
                        }

                        Method (OP2V, 2, NotSerialized)
                        {
                            Store (DerefOf (Index (Arg1, 0x04)), Local0)
                            Store (DerefOf (Index (Arg1, 0x05)), Local1)
                            Multiply (Arg0, Local1, Local1)
                            Add (Local0, Local1, Local0)
                            Return (Local0)
                        }

                        Method (V2OP, 2, NotSerialized)
                        {
                            Store (DerefOf (Index (Arg1, 0x04)), Local0)
                            Store (DerefOf (Index (Arg1, 0x05)), Local1)
                            Subtract (Arg0, Local0, Local0)
                            Divide (Local0, Local1, Local1, Local0)
                            Return (Local0)
                        }
                    }
                }

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103"))
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00000400,         // Address Length
                            )
                    })
                    OperationRegion (HPTC, SystemMemory, HTBA, 0x04)
                    Field (HPTC, ByteAcc, NoLock, Preserve)
                    {
                        HPTS,   2, 
                            ,   5, 
                        HPTE,   1, 
                        Offset (0x04)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        If (LEqual (OSFL (), Zero))
                        {
                            If (HPTE)
                            {
                                Return (0x0F)
                            }
                        }
                        Else
                        {
                            If (HPTE)
                            {
                                Return (0x0B)
                            }
                        }

                        Return (Zero)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x04, HPT)
                        Multiply (HPTS, 0x1000, Local0)
                        Add (Local0, 0xFED00000, HPT)
                        Return (CRS)
                    }
                }

                OperationRegion (RX80, PCI_Config, Zero, 0xFF)
                Field (RX80, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x80), 
                    LPCD,   16, 
                    LPCE,   16
                }

                Name (DBPT, Package (0x04)
                {
                    Package (0x08)
                    {
                        0x03F8, 
                        0x02F8, 
                        0x0220, 
                        0x0228, 
                        0x0238, 
                        0x02E8, 
                        0x0338, 
                        0x03E8
                    }, 

                    Package (0x08)
                    {
                        0x03F8, 
                        0x02F8, 
                        0x0220, 
                        0x0228, 
                        0x0238, 
                        0x02E8, 
                        0x0338, 
                        0x03E8
                    }, 

                    Package (0x03)
                    {
                        0x0378, 
                        0x0278, 
                        0x03BC
                    }, 

                    Package (0x02)
                    {
                        0x03F0, 
                        0x0370
                    }
                })
                Name (DDLT, Package (0x04)
                {
                    Package (0x02)
                    {
                        Zero, 
                        0xFFF8
                    }, 

                    Package (0x02)
                    {
                        0x04, 
                        0xFF8F
                    }, 

                    Package (0x02)
                    {
                        0x08, 
                        0xFCFF
                    }, 

                    Package (0x02)
                    {
                        0x0C, 
                        0xEFFF
                    }
                })
                Method (RRIO, 4, NotSerialized)
                {
                    If (LAnd (LNot (LGreater (Arg0, 0x03)), LNot (LLess (Arg0, Zero))))
                    {
                        Store (Match (DerefOf (Index (DBPT, Arg0)), MEQ, Arg2, MTR, Zero, Zero), Local0)
                        If (LNot (LEqual (Local0, Ones)))
                        {
                            Store (DerefOf (Index (DerefOf (Index (DDLT, Arg0)), Zero)), Local1)
                            Store (DerefOf (Index (DerefOf (Index (DDLT, Arg0)), One)), Local2)
                            ShiftLeft (Local0, Local1, Local0)
                            And (LPCD, Local2, LPCD)
                            Or (LPCD, Local0, LPCD)
                            WX82 (Arg0, Arg1)
                        }
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        If (LEqual (Arg2, 0x0200))
                        {
                            WX82 (0x08, Arg0)
                        }
                        Else
                        {
                            If (LEqual (Arg2, 0x0208))
                            {
                                WX82 (0x09, Arg0)
                            }
                        }
                    }

                    If (LAnd (LNot (LGreater (Arg0, 0x0D)), LNot (LLess (Arg0, 0x0A))))
                    {
                        WX82 (Arg0, Arg1)
                    }
                }

                Method (WX82, 2, NotSerialized)
                {
                    ShiftLeft (One, Arg0, Local0)
                    If (Arg1)
                    {
                        Or (LPCE, Local0, LPCE)
                    }
                    Else
                    {
                        Not (Local0, Local0)
                        And (LPCE, Local0, LPCE)
                    }
                }

                Method (RDMA, 3, NotSerialized)
                {
                }

                Scope (\)
                {
                    OperationRegion (RAMW, SystemMemory, Subtract (TOPM, 0x00010000), 0x00010000)
                    Field (RAMW, ByteAcc, NoLock, Preserve)
                    {
                        PAR0,   32, 
                        PAR1,   32
                    }

                    OperationRegion (IOB2, SystemIO, 0xB2, 0x02)
                    Field (IOB2, ByteAcc, NoLock, Preserve)
                    {
                        SMIC,   8, 
                        SMIS,   8
                    }

                    Method (ISMI, 1, Serialized)
                    {
                        Store (Arg0, SMIC)
                    }

                    Method (GNVS, 1, Serialized)
                    {
                        Store (Arg0, PAR0)
                        ISMI (0x70)
                        Return (PAR1)
                    }

                    Method (SNVS, 2, Serialized)
                    {
                        Store (Arg0, PAR0)
                        Store (Arg1, PAR1)
                        ISMI (0x71)
                    }
                }

                Scope (ASOC)
                {
                    Name (ALAE, Package (0x04)
                    {
                        0x0A070001, 
                        "Music Alarm", 
                        Zero, 
                        Zero
                    })
                    Name (ALSU, Package (0x04)
                    {
                        0x0A070002, 
                        "Sunday", 
                        Zero, 
                        One
                    })
                    Name (ALMO, Package (0x04)
                    {
                        0x0A070003, 
                        "Monday", 
                        Zero, 
                        One
                    })
                    Name (ALTU, Package (0x04)
                    {
                        0x0A070004, 
                        "Tuesday", 
                        Zero, 
                        One
                    })
                    Name (ALWE, Package (0x04)
                    {
                        0x0A070005, 
                        "Wednesday", 
                        Zero, 
                        One
                    })
                    Name (ALTH, Package (0x04)
                    {
                        0x0A070006, 
                        "Thursday", 
                        Zero, 
                        One
                    })
                    Name (ALFR, Package (0x04)
                    {
                        0x0A070007, 
                        "Friday", 
                        Zero, 
                        One
                    })
                    Name (ALSA, Package (0x04)
                    {
                        0x0A070008, 
                        "Saturday", 
                        Zero, 
                        One
                    })
                    Name (ALAH, Package (0x07)
                    {
                        0x0A060009, 
                        "Alarm Hour", 
                        Zero, 
                        0x0C, 
                        Zero, 
                        One, 
                        0x18
                    })
                    Name (ALAM, Package (0x07)
                    {
                        0x0A06000A, 
                        "Alarm Mins", 
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        0x3C
                    })
                    Name (ALAC, Package (0x0A)
                    {
                        0x0A08000B, 
                        "Music Alarm Drive", 
                        Zero, 
                        0x03, 
                        0x05, 
                        "Primary IDE Master", 
                        "Primary IDE Slave", 
                        "Secondary IDE Master", 
                        "Secondary IDE Slave", 
                        "JMicron JMB363 IDE"
                    })
                    Name (ALAT, Package (0x07)
                    {
                        0x0A06000C, 
                        "Starting Track", 
                        Zero, 
                        0x10, 
                        Zero, 
                        One, 
                        0x20
                    })
                    Name (ALAR, Package (0x08)
                    {
                        0x0A08000D, 
                        "Repeat", 
                        Zero, 
                        Zero, 
                        0x03, 
                        "none", 
                        "Single", 
                        "All"
                    })
                    Name (ALAL, Package (0x09)
                    {
                        0x0A08000E, 
                        "Length", 
                        Zero, 
                        Zero, 
                        0x04, 
                        "10 mins", 
                        "20 mins", 
                        "30 mins", 
                        "1 hour"
                    })
                    Name (ALAV, Package (0x07)
                    {
                        0x0A06000F, 
                        "Volume", 
                        Zero, 
                        0x0F, 
                        Zero, 
                        One, 
                        0x20
                    })
                    Name (GRPA, Package (0x0F)
                    {
                        ALAE, 
                        ALSU, 
                        ALMO, 
                        ALTU, 
                        ALWE, 
                        ALTH, 
                        ALFR, 
                        ALSA, 
                        ALAH, 
                        ALAM, 
                        ALAC, 
                        ALAT, 
                        ALAR, 
                        ALAL, 
                        ALAV
                    })
                    Method (GITA, 1, NotSerialized)
                    {
                        Store (And (Arg0, 0xFF), Local0)
                        Name (_T_0, Zero)
                        Store (Local0, _T_0)
                        If (LEqual (_T_0, One))
                        {
                            Store (GNVS (0x16EE), ASB1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x02))
                            {
                                Store (GNVS (0x16EF), ASB1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    Store (GNVS (0x16F0), ASB1)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        Store (GNVS (0x16F1), ASB1)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            Store (GNVS (0x16F2), ASB1)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                Store (GNVS (0x16F3), ASB1)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x07))
                                                {
                                                    Store (GNVS (0x16F4), ASB1)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x08))
                                                    {
                                                        Store (GNVS (0x16F5), ASB1)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x09))
                                                        {
                                                            Store (GNVS (0x5368), ASB1)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0A))
                                                            {
                                                                Store (GNVS (0x6338), ASB1)
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x0B))
                                                                {
                                                                    Store (GNVS (0x3445), ASB1)
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x0C))
                                                                    {
                                                                        Store (GNVS (0x5360), ASB1)
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0x0D))
                                                                        {
                                                                            Store (GNVS (0x256A), ASB1)
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0x0E))
                                                                            {
                                                                                Store (GNVS (0x256C), ASB1)
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0x0F))
                                                                                {
                                                                                    Store (GNVS (0x5378), ASB1)
                                                                                }
                                                                                Else
                                                                                {
                                                                                    Store (Zero, ASB0)
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    Method (SITA, 3, NotSerialized)
                    {
                        Store (And (Arg0, 0xFF), Local0)
                        Name (_T_0, Zero)
                        Store (Local0, _T_0)
                        If (LEqual (_T_0, One))
                        {
                            SNVS (0x16EE, Arg1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x02))
                            {
                                SNVS (0x16EF, Arg1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    SNVS (0x16F0, Arg1)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        SNVS (0x16F1, Arg1)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            SNVS (0x16F2, Arg1)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                SNVS (0x16F3, Arg1)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x07))
                                                {
                                                    SNVS (0x16F4, Arg1)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x08))
                                                    {
                                                        SNVS (0x16F5, Arg1)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x09))
                                                        {
                                                            SNVS (0x5368, Arg1)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0A))
                                                            {
                                                                SNVS (0x6338, Arg1)
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x0B))
                                                                {
                                                                    SNVS (0x3445, Arg1)
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x0C))
                                                                    {
                                                                        SNVS (0x5360, Arg1)
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0x0D))
                                                                        {
                                                                            SNVS (0x256A, Arg1)
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0x0E))
                                                                            {
                                                                                SNVS (0x256C, Arg1)
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0x0F))
                                                                                {
                                                                                    SNVS (0x5378, Arg1)
                                                                                }
                                                                                Else
                                                                                {
                                                                                    Store (Zero, ASB0)
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                Device (^PCIE)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x11)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xE0000000,         // Address Base
                            0x10000000,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x04, BAS1)
                        CreateDWordField (CRS, 0x08, LEN1)
                        Store (PCIB, BAS1)
                        Store (PCIL, LEN1)
                        Return (CRS)
                    }
                }

                Scope (\_GPE)
                {
                    Method (_L1C, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.SBRG.ASOC, One)
                        Sleep (0x03E8)
                    }
                }

                Scope (ASOC)
                {
                    Name (VESL, Zero)
                    Method (SPLV, 1, Serialized)
                    {
                        And (Arg0, 0xFFFF, VESL)
                        Store (VESL, PAR0)
                        ISMI (0x88)
                        Store (And (PAR0, 0xFFFF), Local0)
                        Return (Local0)
                    }

                    Method (GPLV, 0, Serialized)
                    {
                        Return (VESL)
                    }
                }

                Device (OMSC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, Zero)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        If (APIC)
                        {
                            CreateDWordField (CRS, 0x08, ML01)
                            CreateDWordField (CRS, 0x04, MB01)
                            CreateDWordField (CRS, 0x14, ML02)
                            CreateDWordField (CRS, 0x10, MB02)
                            Store (0xFEC00000, MB01)
                            Store (0x1000, ML01)
                            Store (0xFEE00000, MB02)
                            Store (0x1000, ML02)
                        }

                        Return (CRS)
                    }
                }

                Device (^^RMEM)
                {
                    Name (_HID, EisaId ("PNP0C01"))
                    Name (_UID, One)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite,
                            0x00000000,         // Address Base
                            0x000A0000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x000E0000,         // Address Base
                            0x00020000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0x00100000,         // Address Base
                            0x00000000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            )
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x10, BAS1)
                        CreateDWordField (CRS, 0x14, LEN1)
                        CreateDWordField (CRS, 0x1C, BAS2)
                        CreateDWordField (CRS, 0x20, LEN2)
                        CreateDWordField (CRS, 0x2C, LEN3)
                        CreateDWordField (CRS, 0x34, BAS4)
                        CreateDWordField (CRS, 0x38, LEN4)
                        If (OSFL ()) {}
                        Else
                        {
                            If (MG1B)
                            {
                                If (LGreater (MG1B, 0x000C0000))
                                {
                                    Store (0x000C0000, BAS1)
                                    Subtract (MG1B, BAS1, LEN1)
                                }
                            }
                            Else
                            {
                                Store (0x000C0000, BAS1)
                                Store (0x00020000, LEN1)
                            }

                            If (Add (MG1B, MG1L, Local0))
                            {
                                Store (Local0, BAS2)
                                Subtract (0x00100000, BAS2, LEN2)
                            }
                        }

                        Subtract (MG2B, 0x00100000, LEN3)
                        Add (MG2B, MG2L, BAS4)
                        Subtract (Zero, BAS4, LEN4)
                        Return (CRS)
                    }
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CID, 0x0B03D041)
                    Method (_STA, 0, NotSerialized)
                    {
                        ShiftLeft (One, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (Zero)
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Address Range Minimum
                            0x0060,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0064,             // Address Range Minimum
                            0x0064,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IRQNoFlags ()
                            {1}
                    })
                }

                Method (PS2K._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x1F, 0x04))
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F03"))
                    Name (_CID, 0x130FD041)
                    Method (_STA, 0, NotSerialized)
                    {
                        ShiftLeft (One, 0x0C, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (Zero)
                    }

                    Name (CRS1, ResourceTemplate ()
                    {
                        IRQNoFlags ()
                            {12}
                    })
                    Name (CRS2, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Address Range Minimum
                            0x0060,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0064,             // Address Range Minimum
                            0x0064,             // Address Range Maximum
                            0x00,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IRQNoFlags ()
                            {12}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        ShiftLeft (One, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (CRS1)
                        }
                        Else
                        {
                            Return (CRS2)
                        }
                    }
                }

                Method (PS2M._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x1D, 0x04))
                }
            }

            Device (SATA)
            {
                Name (_ADR, 0x001F0002)
                Name (^NATA, Package (0x01)
                {
                    0x001F0002
                })
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

                    Package (0x04)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                    Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                    Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                    Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                    Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                    Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                    Offset (0x0C), 
                    Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)
                    Method (_GTM, 0, NotSerialized)
                    {
                        FZHD ()
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (PMUT, GMUT)
                        Store (PMCR, GMCR)
                        Store (PSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (PSUT, GSUT)
                        Store (PSCR, GSCR)
                        STM ()
                        Store (GMPT, PMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT)
                        Store (GMCR, PMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT)
                        Store (GSCR, PSCR)
                        If (And (Local0, One))
                        {
                            Store (One, PM3E)
                        }
                        Else
                        {
                            Store (Zero, PM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E)
                        }
                        Else
                        {
                            Store (Zero, PM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE)
                        }
                        Else
                        {
                            Store (Zero, PMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E)
                        }
                        Else
                        {
                            Store (Zero, PS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E)
                        }
                        Else
                        {
                            Store (Zero, PS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE)
                        }
                        Else
                        {
                            Store (Zero, PSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA0)
                        Store (GTF (One, Arg2), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)
                    Method (_GTM, 0, NotSerialized)
                    {
                        FZHD ()
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (SMUT, GMUT)
                        Store (SMCR, GMCR)
                        Store (SSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (SSUT, GSUT)
                        Store (SSCR, GSCR)
                        STM ()
                        Store (GMPT, SMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT)
                        Store (GMCR, SMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT)
                        Store (GSCR, SSCR)
                        If (And (Local0, One))
                        {
                            Store (One, SM3E)
                        }
                        Else
                        {
                            Store (Zero, SM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E)
                        }
                        Else
                        {
                            Store (Zero, SM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE)
                        }
                        Else
                        {
                            Store (Zero, SMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E)
                        }
                        Else
                        {
                            Store (Zero, SS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E)
                        }
                        Else
                        {
                            Store (Zero, SS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE)
                        }
                        Else
                        {
                            Store (Zero, SSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA2)
                        Store (GTF (One, Arg2), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (0x10, CHNF)
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA0)
                        Or (CHNF, One, CHNF)
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Store (TMD0, Debug)
                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE)
                        Store (Zero, GMUT)
                        Store (Zero, GSUE)
                        Store (Zero, GSUT)
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GMUT)
                            Or (GMUE, One, GMUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE)
                                Or (GMUE, 0x04, GMUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                            {
                                If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                                {
                                    Store (DMA0, PIO0)
                                    Or (GMUE, 0x80, GMUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GSUT)
                            Or (GSUE, One, GSUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE)
                                Or (GSUE, 0x04, GSUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                            {
                                If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                                {
                                    Store (DMA1, PIO1)
                                    Or (GSUE, 0x80, GSUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE)
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), Local1)
                        Store (Local1, GMPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), Local1)
                        Store (Local1, GSPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE)
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT02, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90
                })
                Name (AT03, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6
                })
                Name (AT04, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX)
                    Store (Arg1, A001)
                    Store (Arg2, A005)
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC)
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49)
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53)
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63)
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59)
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88)
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY)
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT)
                        }
                        Else
                        {
                            Store (PIO0, PIOT)
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT)
                            }
                            Else
                            {
                                Store (DMA0, DMAT)
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY)
                        Store (PIO0, PIOT)
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT)
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00)), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, Zero, Zero), Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    Else
                    {
                        If (LAnd (And (ID63, 0xFF00), PIOT))
                        {
                            And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x03, Local0)
                            Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0)), Local1)
                            GTFB (AT01, Local1, Local7)
                        }
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    Else
                    {
                        If (And (ID49, 0x0400))
                        {
                            GTFB (AT01, One, Local7)
                        }
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB)
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (RETB)
                }
            }

            Device (SAT1)
            {
                Name (_ADR, 0x001F0005)
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

                    Package (0x04)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                    Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                    Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                    Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                    Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                    Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                    Offset (0x0C), 
                    Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (PMUT, GMUT)
                        Store (PMCR, GMCR)
                        Store (PSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (PSUT, GSUT)
                        Store (PSCR, GSCR)
                        STM ()
                        Store (GMPT, PMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT)
                        Store (GMCR, PMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT)
                        Store (GSCR, PSCR)
                        If (And (Local0, One))
                        {
                            Store (One, PM3E)
                        }
                        Else
                        {
                            Store (Zero, PM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E)
                        }
                        Else
                        {
                            Store (Zero, PM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE)
                        }
                        Else
                        {
                            Store (Zero, PMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E)
                        }
                        Else
                        {
                            Store (Zero, PS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E)
                        }
                        Else
                        {
                            Store (Zero, PS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE)
                        }
                        Else
                        {
                            Store (Zero, PSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA0)
                        Store (GTF (One, Arg2), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (SMUT, GMUT)
                        Store (SMCR, GMCR)
                        Store (SSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (SSUT, GSUT)
                        Store (SSCR, GSCR)
                        STM ()
                        Store (GMPT, SMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT)
                        Store (GMCR, SMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT)
                        Store (GSCR, SSCR)
                        If (And (Local0, One))
                        {
                            Store (One, SM3E)
                        }
                        Else
                        {
                            Store (Zero, SM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E)
                        }
                        Else
                        {
                            Store (Zero, SM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE)
                        }
                        Else
                        {
                            Store (Zero, SMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E)
                        }
                        Else
                        {
                            Store (Zero, SS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E)
                        }
                        Else
                        {
                            Store (Zero, SS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE)
                        }
                        Else
                        {
                            Store (Zero, SSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA2)
                        Store (GTF (One, Arg2), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (0x10, CHNF)
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA0)
                        Or (CHNF, One, CHNF)
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Store (TMD0, Debug)
                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE)
                        Store (Zero, GMUT)
                        Store (Zero, GSUE)
                        Store (Zero, GSUT)
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GMUT)
                            Or (GMUE, One, GMUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE)
                                Or (GMUE, 0x04, GMUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                            {
                                If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                                {
                                    Store (DMA0, PIO0)
                                    Or (GMUE, 0x80, GMUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GSUT)
                            Or (GSUE, One, GSUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE)
                                Or (GSUE, 0x04, GSUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                            {
                                If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                                {
                                    Store (DMA1, PIO1)
                                    Or (GSUE, 0x80, GSUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE)
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), Local1)
                        Store (Local1, GMPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), Local1)
                        Store (Local1, GSPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE)
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT02, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90
                })
                Name (AT03, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6
                })
                Name (AT04, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX)
                    Store (Arg1, A001)
                    Store (Arg2, A005)
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC)
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49)
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53)
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63)
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59)
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88)
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY)
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT)
                        }
                        Else
                        {
                            Store (PIO0, PIOT)
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT)
                            }
                            Else
                            {
                                Store (DMA0, DMAT)
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY)
                        Store (PIO0, PIOT)
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT)
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00)), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, Zero, Zero), Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    Else
                    {
                        If (LAnd (And (ID63, 0xFF00), PIOT))
                        {
                            And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x03, Local0)
                            Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0)), Local1)
                            GTFB (AT01, Local1, Local7)
                        }
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    Else
                    {
                        If (And (ID49, 0x0400))
                        {
                            GTFB (AT01, One, Local7)
                        }
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB)
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (RETB)
                }
            }

            Device (EUSB)
            {
                Name (_ADR, 0x001D0007)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }

            Device (USBE)
            {
                Name (_ADR, 0x001A0007)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }

            Device (P0P5)
            {
                Name (_ADR, 0x001C0001)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR05)
                    }

                    Return (PR05)
                }
            }

            Device (P0P6)
            {
                Name (_ADR, 0x001C0002)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR06)
                    }

                    Return (PR06)
                }
            }

            Device (P0P7)
            {
                Name (_ADR, 0x001C0003)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR07)
                    }

                    Return (PR07)
                }
            }

            Device (P0P8)
            {
                Name (_ADR, 0x001C0004)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR08)
                    }

                    Return (PR08)
                }

                Device (JMF0)
                {
                    Name (_ADR, Zero)
                    Name (PIOT, Package (0x05)
                    {
                        0x0258, 
                        0x0186, 
                        0x014A, 
                        0xB4, 
                        0x78
                    })
                    Name (UDMA, Package (0x07)
                    {
                        0x78, 
                        0x50, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14, 
                        0x0F
                    })
                    Name (MDMA, Package (0x03)
                    {
                        0x01E0, 
                        0x96, 
                        0x78
                    })
                    OperationRegion (CF40, PCI_Config, 0x40, 0x04)
                    Field (CF40, ByteAcc, NoLock, Preserve)
                    {
                            ,   3, 
                        CAB0,   1, 
                            ,   18, 
                        SWAP,   1, 
                        CHN0,   1, 
                        Offset (0x04)
                    }

                    OperationRegion (CF80, PCI_Config, 0x80, 0x04)
                    Field (CF80, ByteAcc, NoLock, Preserve)
                    {
                            ,   19, 
                        CAB1,   1, 
                        Offset (0x03), 
                        CHN1,   1, 
                        Offset (0x04)
                    }

                    Name (IDEB, Buffer (0x14) {})
                    CreateDWordField (IDEB, Zero, GTM0)
                    CreateDWordField (IDEB, 0x04, GTM1)
                    CreateDWordField (IDEB, 0x08, GTM2)
                    CreateDWordField (IDEB, 0x0C, GTM3)
                    CreateDWordField (IDEB, 0x10, GTM4)
                    Name (PMIO, 0x04)
                    Name (PMDM, 0x06)
                    Name (PSIO, 0x04)
                    Name (PSDM, 0x06)
                    Name (SMIO, 0x04)
                    Name (SMDM, 0x06)
                    Name (SSIO, 0x04)
                    Name (SSDM, 0x06)
                    Name (MODP, 0x05)
                    Name (MODS, 0x05)
                    Device (SDE0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, PMIO)), Local0)
                            Store (DerefOf (Index (PIOT, PSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODP, One))
                            {
                                Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                If (LGreater (PMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PMDM)), Local1)
                            }

                            If (LAnd (MODP, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                If (LGreater (PSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), PMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), PSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                            }

                            Store (Local4, MODP)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PMDM, DMAM)
                                If (LAnd (MODP, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PSDM, DMAM)
                                If (LAnd (MODP, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }

                    Device (SDE1)
                    {
                        Name (_ADR, One)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, SMIO)), Local0)
                            Store (DerefOf (Index (PIOT, SSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODS, One))
                            {
                                Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                If (LGreater (SMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SMDM)), Local1)
                            }

                            If (LAnd (MODS, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                If (LGreater (SSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), SMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), SSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                            }

                            Store (Local4, MODS)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SMDM, DMAM)
                                If (LAnd (MODS, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SSDM, DMAM)
                                If (LAnd (MODS, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }
                }

                Device (JMF1)
                {
                    Name (_ADR, One)
                    Name (PIOT, Package (0x05)
                    {
                        0x0258, 
                        0x0186, 
                        0x014A, 
                        0xB4, 
                        0x78
                    })
                    Name (UDMA, Package (0x07)
                    {
                        0x78, 
                        0x50, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14, 
                        0x0F
                    })
                    Name (MDMA, Package (0x03)
                    {
                        0x01E0, 
                        0x96, 
                        0x78
                    })
                    OperationRegion (CF40, PCI_Config, 0x40, 0x04)
                    Field (CF40, ByteAcc, NoLock, Preserve)
                    {
                            ,   3, 
                        CAB0,   1, 
                            ,   18, 
                        SWAP,   1, 
                        CHN0,   1, 
                        Offset (0x04)
                    }

                    OperationRegion (CF80, PCI_Config, 0x80, 0x04)
                    Field (CF80, ByteAcc, NoLock, Preserve)
                    {
                            ,   19, 
                        CAB1,   1, 
                        Offset (0x03), 
                        CHN1,   1, 
                        Offset (0x04)
                    }

                    Name (IDEB, Buffer (0x14) {})
                    CreateDWordField (IDEB, Zero, GTM0)
                    CreateDWordField (IDEB, 0x04, GTM1)
                    CreateDWordField (IDEB, 0x08, GTM2)
                    CreateDWordField (IDEB, 0x0C, GTM3)
                    CreateDWordField (IDEB, 0x10, GTM4)
                    Name (PMIO, 0x04)
                    Name (PMDM, 0x06)
                    Name (PSIO, 0x04)
                    Name (PSDM, 0x06)
                    Name (SMIO, 0x04)
                    Name (SMDM, 0x06)
                    Name (SSIO, 0x04)
                    Name (SSDM, 0x06)
                    Name (MODP, 0x05)
                    Name (MODS, 0x05)
                    Device (SDE0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, PMIO)), Local0)
                            Store (DerefOf (Index (PIOT, PSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODP, One))
                            {
                                Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                If (LGreater (PMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PMDM)
                                            Store (DerefOf (Index (UDMA, PMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PMDM)), Local1)
                            }

                            If (LAnd (MODP, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                If (LGreater (PSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, PSDM)
                                            Store (DerefOf (Index (UDMA, PSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, PSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), PMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), PMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), PSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), PSDM)
                                }
                            }

                            Store (Local4, MODP)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PMDM, DMAM)
                                If (LAnd (MODP, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (PSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (PSDM, DMAM)
                                If (LAnd (MODP, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }

                    Device (SDE1)
                    {
                        Name (_ADR, One)
                        Method (_GTM, 0, NotSerialized)
                        {
                            Store (DerefOf (Index (PIOT, SMIO)), Local0)
                            Store (DerefOf (Index (PIOT, SSIO)), Local2)
                            Store (0x1A, Local4)
                            If (LAnd (MODS, One))
                            {
                                Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                If (LGreater (SMDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SMDM)
                                            Store (DerefOf (Index (UDMA, SMDM)), Local1)
                                        }
                                    }
                                }

                                Or (Local4, One, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SMDM)), Local1)
                            }

                            If (LAnd (MODS, 0x04))
                            {
                                Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                If (LGreater (SSDM, 0x02))
                                {
                                    If (LAnd (LNot (LEqual (SWAP, One)), LEqual (CHN0, One)))
                                    {
                                        If (CAB0)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }

                                    If (LAnd (LEqual (SWAP, One), LEqual (CHN1, One)))
                                    {
                                        If (CAB1)
                                        {
                                            Store (0x02, SSDM)
                                            Store (DerefOf (Index (UDMA, SSDM)), Local3)
                                        }
                                    }
                                }

                                Or (Local4, 0x04, Local4)
                            }
                            Else
                            {
                                Store (DerefOf (Index (MDMA, SSDM)), Local3)
                            }

                            Store (Local0, GTM0)
                            Store (Local1, GTM1)
                            Store (Local2, GTM2)
                            Store (Local3, GTM3)
                            Store (Local4, GTM4)
                            Return (IDEB)
                        }

                        Method (_STM, 3, NotSerialized)
                        {
                            Store (Arg0, IDEB)
                            Store (GTM0, Local0)
                            Store (GTM1, Local1)
                            Store (GTM2, Local2)
                            Store (GTM3, Local3)
                            Store (GTM4, Local4)
                            If (LAnd (LNot (LEqual (Local0, Ones)), LNot (LEqual (Local0, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), SMIO)
                            }

                            If (LAnd (LNot (LEqual (Local1, Ones)), LNot (LEqual (Local1, Zero))))
                            {
                                If (LAnd (Local4, One))
                                {
                                    Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), SMDM)
                                }
                            }

                            If (LAnd (LNot (LEqual (Local2, Ones)), LNot (LEqual (Local2, Zero))))
                            {
                                Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), SSIO)
                            }

                            If (LAnd (LNot (LEqual (Local3, Ones)), LNot (LEqual (Local3, Zero))))
                            {
                                If (LAnd (Local4, 0x04))
                                {
                                    Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                                Else
                                {
                                    Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), SSDM)
                                }
                            }

                            Store (Local4, MODS)
                        }

                        Device (DRV0)
                        {
                            Name (_ADR, Zero)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SMIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SMDM, DMAM)
                                If (LAnd (MODS, One))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }

                        Device (DRV1)
                        {
                            Name (_ADR, One)
                            Method (_GTF, 0, NotSerialized)
                            {
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local0)
                                Store (Buffer (0x07)
                                    {
                                        0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                    }, Local1)
                                CreateByteField (Local0, One, PIOM)
                                CreateByteField (Local1, One, DMAM)
                                Store (SSIO, PIOM)
                                Or (PIOM, 0x08, PIOM)
                                Store (SSDM, DMAM)
                                If (LAnd (MODS, 0x04))
                                {
                                    Or (DMAM, 0x40, DMAM)
                                }
                                Else
                                {
                                    Or (DMAM, 0x20, DMAM)
                                }

                                Concatenate (Local0, Local1, Local2)
                                Return (Local2)
                            }
                        }
                    }
                }
            }

            Device (P0P9)
            {
                Name (_ADR, 0x001C0005)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR09)
                    }

                    Return (PR09)
                }
            }

            Device (USB0)
            {
                Name (_ADR, 0x001D0000)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x03, 0x04))
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x001D0001)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x04, 0x04))
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001D0002)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0C, 0x04))
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x001D0003)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0E, 0x04))
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x001A0000)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0E, 0x04))
                }
            }

            Device (USB5)
            {
                Name (_ADR, 0x001A0001)
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW)
                    }
                    Else
                    {
                        Store (Zero, USBW)
                    }
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x05, 0x04))
                }
            }

            Device (P0P4)
            {
                Name (_ADR, 0x001C0000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR04)
                    }

                    Return (PR04)
                }
            }
        }

        Scope (\_GPE)
        {
            Method (_L09, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.P0P2, 0x02)
                Notify (\_SB.PCI0.P0P5, 0x02)
                Notify (\_SB.PCI0.P0P6, 0x02)
                Notify (\_SB.PCI0.P0P7, 0x02)
                Notify (\_SB.PCI0.P0P8, 0x02)
                Notify (\_SB.PCI0.P0P9, 0x02)
                Notify (\_SB.PCI0.P0P4, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L0B, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.P0P1, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L08, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.SIOH ()
            }

            Method (_L1F, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.SIOH ()
            }

            Method (_L1D, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.SIOH ()
            }

            Method (_L0D, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.EUSB, 0x02)
                Notify (\_SB.PCI0.USBE, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L03, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB0, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L04, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB1, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L0C, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB2, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L0E, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB3, 0x02)
                Notify (\_SB.PCI0.USB4, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L05, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB5, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }
        }

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Name (_UID, 0xAA)
            Name (_STA, 0x0B)
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G0T0, Package (0x07)
        {
            0x00060000, 
            "AP version", 
            0x40000000, 
            Zero, 
            Zero, 
            One, 
            0x02
        })
        Name (G0T1, Package (0x07)
        {
            0x00060001, 
            "Feature flag", 
            0x40000000, 
            Zero, 
            Zero, 
            One, 
            0x04
        })
        Name (GRP0, Package (0x02)
        {
            G0T0, 
            G0T1
        })
        Method (GIT0, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (Zero, ASB1)
            }
            Else
            {
                If (LEqual (_T_0, One))
                {
                    Store (One, ASB1)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }

        Method (SIT0, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (0x0300, DBG8)
            }
            Else
            {
                If (LEqual (_T_0, One))
                {
                    Store (0x0301, DBG8)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G3T0, Package (0x07)
        {
            0x03010011, 
            "CPU frequency", 
            Zero, 
            Zero, 
            0x2710, 
            0x64, 
            0x012D
        })
        Name (G3T2, Package (0x07)
        {
            0x03060013, 
            "CPU ratio", 
            Zero, 
            Zero, 
            0x06, 
            One, 
            0x14
        })
        Name (G321, Package (0x09)
        {
            0x03820032, 
            "DRAM voltage", 
            Zero, 
            Zero, 
            0x0708, 
            0x32, 
            0x0D, 
            One, 
            "Auto"
        })
        Name (G322, Package (0x0C)
        {
            0x03080031, 
            "DRAM frequency", 
            Zero, 
            Zero, 
            0x07, 
            "Auto", 
            Zero, 
            "533 MHz", 
            "667 MHz", 
            "800 MHz", 
            "889 MHz", 
            "1067 MHz"
        })
        Name (G340, Package (0x09)
        {
            0x03810051, 
            "PCI Express frequency", 
            Zero, 
            Zero, 
            0x2328, 
            0x64, 
            0x3D, 
            One, 
            "Auto"
        })
        Name (GRP3, Package (0x05)
        {
            G3T0, 
            G3T2, 
            G321, 
            G322, 
            G340
        })
        Method (GIT3, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Subtract (GNVS (0x02C0), 0x64, ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x13))
                {
                    Subtract (GNVS (0x8298), 0x06, ASB1)
                }
                Else
                {
                    If (LEqual (_T_0, 0x32))
                    {
                        Store (GNVS (0x4438), ASB1)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x31))
                        {
                            Store (GNVS (0x3480), ASB1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x51))
                            {
                                Store (GNVS (0x62D0), ASB1)
                            }
                            Else
                            {
                                Store (Zero, ASB0)
                            }
                        }
                    }
                }
            }
        }

        Method (SIT3, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Add (Arg1, 0x64, Local2)
                If (LNot (LEqual (GNVS (0x02C0), Local2)))
                {
                    CreateByteField (CLKR, 0x04, CB04)
                    CreateWordField (CLKR, 0x0E, CBMN)
                    Store (RBLK (0xD2, Zero, 0x13), CLKR)
                    Multiply (Arg1, 0x03, Local0)
                    CreateByteField (MNBF, Local0, MN04)
                    CreateWordField (MNBF, Increment (Local0), MNVL)
                    If (LEqual (CB04, MN04))
                    {
                        If (And (Arg2, One))
                        {
                            Store (MNVL, CBMN)
                            WBLK (0xD2, Zero, 0x13, CLKR)
                        }
                    }
                    Else
                    {
                        Or (ASB0, 0x02, ASB0)
                    }

                    If (And (Arg2, One))
                    {
                        SNVS (0x02C0, Local2)
                    }
                }
            }
            Else
            {
                If (LEqual (_T_0, 0x13))
                {
                    If (LNot (LEqual (GNVS (0x8298), Add (Arg1, 0x06, Arg1))))
                    {
                        If (And (Arg2, One))
                        {
                            SNVS (0x8298, Arg1)
                        }

                        Or (ASB0, 0x02, ASB0)
                    }
                }
                Else
                {
                    If (LEqual (_T_0, 0x32))
                    {
                        If (LNot (LEqual (GNVS (0x4438), Arg1)))
                        {
                            If (LEqual (Arg1, Zero))
                            {
                                Or (ASB0, 0x02, ASB0)
                            }
                            Else
                            {
                                If (And (Arg2, One))
                                {
                                    ENFG (0x0A)
                                    And (CRE5, 0xE1, Local1)
                                    ShiftLeft (Subtract (Arg1, One), One, Local2)
                                    Or (Local1, Local2, CRE5)
                                    EXFG ()
                                }
                            }

                            If (And (Arg2, One))
                            {
                                SNVS (0x4438, Arg1)
                            }
                        }
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x31))
                        {
                            If (LNot (LEqual (GNVS (0x3480), Arg1)))
                            {
                                If (And (Arg2, One))
                                {
                                    SNVS (0x3480, Arg1)
                                }

                                Or (ASB0, 0x02, ASB0)
                            }
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x51))
                            {
                                If (LNot (LEqual (GNVS (0x62D0), Arg1)))
                                {
                                    CreateByteField (CLKR, 0x10, CB16)
                                    Store (RBLK (0xD2, Zero, 0x13), CLKR)
                                    CreateByteField (PCEF, Arg1, PC16)
                                    If (LEqual (CB16, PC16))
                                    {
                                        If (And (Arg2, One))
                                        {
                                            Store (PC16, CB16)
                                            WBLK (0xD2, Zero, 0x13, CLKR)
                                            SNVS (0x62D0, Arg1)
                                        }
                                    }
                                }
                            }
                            Else
                            {
                                Store (Zero, ASB0)
                            }
                        }
                    }
                }
            }
        }

        Name (CLKR, Buffer (0x18)
        {
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
        })
        Name (PCEF, Buffer (0x3E)
        {
            0xC8, 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 
            0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 
            0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 
            0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 0xF0, 
            0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x00, 
            0x02, 0x04, 0x06, 0x08, 0x85, 0x86, 0x87, 0x88, 
            0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 
            0x91, 0x92, 0x93, 0x94, 0x95, 0x96
        })
        Name (MNBF, Buffer (0x0387)
        {
            0x05, 0xC8, 0x3C, 0x05, 0xCA, 0x3C, 0x05, 0xCC, 
            0x3C, 0x05, 0xCE, 0x3C, 0x05, 0xD0, 0x3C, 0x05, 
            0xD2, 0x3C, 0x05, 0xD4, 0x3C, 0x05, 0xD6, 0x3C, 
            0x05, 0xD8, 0x3C, 0x05, 0xDA, 0x3C, 0x05, 0xDC, 
            0x3C, 0x05, 0xDE, 0x3C, 0x05, 0xE0, 0x3C, 0x05, 
            0xE2, 0x3C, 0x05, 0xE4, 0x3C, 0x05, 0xE6, 0x3C, 
            0x05, 0xE8, 0x3C, 0x05, 0xEA, 0x3C, 0x05, 0xEC, 
            0x3C, 0x05, 0xEE, 0x3C, 0x05, 0xF0, 0x3C, 0x05, 
            0xF2, 0x3C, 0x05, 0xF4, 0x3C, 0x05, 0xF6, 0x3C, 
            0x05, 0xF8, 0x3C, 0x05, 0xFA, 0x3C, 0x05, 0xFC, 
            0x3C, 0x05, 0xFE, 0x3C, 0x05, 0x00, 0xBC, 0x05, 
            0x02, 0xBC, 0x05, 0x04, 0xBC, 0x05, 0x06, 0xBC, 
            0x05, 0x08, 0xBC, 0x03, 0x8A, 0x3E, 0x03, 0x70, 
            0x32, 0x03, 0x9E, 0x46, 0x03, 0x7D, 0x37, 0x03, 
            0x8D, 0x3E, 0x03, 0x8A, 0x3C, 0x03, 0x8B, 0x3C, 
            0x03, 0x90, 0x3E, 0x03, 0x8D, 0x3C, 0x03, 0x8E, 
            0x3C, 0x03, 0x93, 0x3E, 0x03, 0x90, 0x3C, 0x03, 
            0x91, 0x3C, 0x03, 0x92, 0x3C, 0x03, 0x97, 0x3E, 
            0x03, 0x94, 0x3C, 0x03, 0x95, 0x3C, 0x03, 0x96, 
            0x3C, 0x03, 0x97, 0x3C, 0x03, 0x98, 0x3C, 0x03, 
            0x9E, 0x3E, 0x03, 0x9A, 0x3C, 0x03, 0x9B, 0x3C, 
            0x03, 0x9C, 0x3C, 0x03, 0x9D, 0x3C, 0x03, 0x9E, 
            0x3C, 0x03, 0x9F, 0x3C, 0x03, 0xA5, 0x3E, 0x03, 
            0xA1, 0x3C, 0x03, 0xA2, 0x3C, 0x03, 0xA3, 0x3C, 
            0x03, 0xA4, 0x3C, 0x03, 0xA5, 0x3C, 0x03, 0xA6, 
            0x3C, 0x03, 0xA7, 0x3C, 0x03, 0xA8, 0x3C, 0x03, 
            0xA9, 0x3C, 0x03, 0xAA, 0x3C, 0x03, 0xAB, 0x3C, 
            0x03, 0xAC, 0x3C, 0x03, 0xAD, 0x3C, 0x03, 0xAE, 
            0x3C, 0x03, 0xAF, 0x3C, 0x03, 0xB0, 0x3C, 0x03, 
            0xB1, 0x3C, 0x03, 0xB2, 0x3C, 0x03, 0xB3, 0x3C, 
            0x03, 0xB4, 0x3C, 0x03, 0xB5, 0x3C, 0x03, 0xB6, 
            0x3C, 0x03, 0xB7, 0x3C, 0x03, 0xB8, 0x3C, 0x03, 
            0xB9, 0x3C, 0x03, 0xBA, 0x3C, 0x03, 0xBB, 0x3C, 
            0x03, 0xBC, 0x3C, 0x03, 0xBD, 0x3C, 0x03, 0xBE, 
            0x3C, 0x03, 0xBF, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 
            0xC1, 0x3C, 0x03, 0xC2, 0x3C, 0x03, 0xC3, 0x3C, 
            0x03, 0xC4, 0x3C, 0x03, 0xC5, 0x3C, 0x03, 0xC6, 
            0x3C, 0x03, 0xC7, 0x3C, 0x02, 0xD6, 0x40, 0x02, 
            0xA8, 0x32, 0x02, 0xB3, 0x35, 0x02, 0xBE, 0x38, 
            0x02, 0xBF, 0x38, 0x02, 0xCD, 0x3C, 0x02, 0xDB, 
            0x40, 0x02, 0xCF, 0x3C, 0x02, 0xD0, 0x3C, 0x02, 
            0xD1, 0x3C, 0x02, 0xE0, 0x40, 0x02, 0xD3, 0x3C, 
            0x02, 0xD4, 0x3C, 0x02, 0xD5, 0x3C, 0x02, 0xE4, 
            0x40, 0x02, 0xD7, 0x3C, 0x02, 0xD8, 0x3C, 0x02, 
            0xD9, 0x3C, 0x02, 0xDA, 0x3C, 0x02, 0xDB, 0x3C, 
            0x02, 0xEA, 0x40, 0x02, 0xDD, 0x3C, 0x02, 0xDE, 
            0x3C, 0x02, 0xDF, 0x3C, 0x02, 0xE0, 0x3C, 0x02, 
            0xE1, 0x3C, 0x02, 0xE2, 0x3C, 0x02, 0xE3, 0x3C, 
            0x02, 0xE4, 0x3C, 0x02, 0xE5, 0x3C, 0x02, 0xF5, 
            0x40, 0x02, 0xE7, 0x3C, 0x02, 0xE8, 0x3C, 0x02, 
            0xE9, 0x3C, 0x02, 0xEA, 0x3C, 0x02, 0xEB, 0x3C, 
            0x02, 0xEC, 0x3C, 0x02, 0xED, 0x3C, 0x02, 0xEE, 
            0x3C, 0x02, 0xEF, 0x3C, 0x02, 0xFF, 0x40, 0x02, 
            0xF1, 0x3C, 0x02, 0xF2, 0x3C, 0x02, 0xF3, 0x3C, 
            0x02, 0xF4, 0x3C, 0x02, 0xF5, 0x3C, 0x02, 0xF6, 
            0x3C, 0x02, 0xF7, 0x3C, 0x02, 0xF8, 0x3C, 0x02, 
            0xF9, 0x3C, 0x02, 0xFA, 0x3C, 0x02, 0xFB, 0x3C, 
            0x02, 0xFC, 0x3C, 0x02, 0xFD, 0x3C, 0x02, 0xFE, 
            0x3C, 0x02, 0xFF, 0x3C, 0x02, 0x00, 0xBC, 0x02, 
            0x01, 0xBC, 0x02, 0x02, 0xBC, 0x02, 0x03, 0xBC, 
            0x02, 0x82, 0x1E, 0x02, 0x05, 0xBC, 0x02, 0x06, 
            0xBC, 0x02, 0x07, 0xBC, 0x02, 0x08, 0xBC, 0x02, 
            0x09, 0xBC, 0x00, 0xAA, 0x33, 0x00, 0xE7, 0x45, 
            0x00, 0xA8, 0x32, 0x00, 0xAC, 0x33, 0x00, 0xB0, 
            0x34, 0x00, 0x69, 0x1F, 0x00, 0x44, 0x14, 0x00, 
            0x74, 0x22, 0x00, 0xAE, 0x33, 0x00, 0x6E, 0x20, 
            0x00, 0x45, 0x14, 0x00, 0x5A, 0x1A, 0x00, 0x49, 
            0x15, 0x00, 0x81, 0x25, 0x00, 0x46, 0x14, 0x00, 
            0xB3, 0x33, 0x00, 0x4A, 0x15, 0x00, 0x5C, 0x1A, 
            0x00, 0x47, 0x14, 0x00, 0x72, 0x20, 0x00, 0xB6, 
            0x33, 0x00, 0x7A, 0x22, 0x00, 0x48, 0x14, 0x00, 
            0x70, 0x1F, 0x00, 0x57, 0x18, 0x00, 0x50, 0x16, 
            0x00, 0x49, 0x14, 0x00, 0xE3, 0x3E, 0x00, 0xBB, 
            0x33, 0x00, 0x76, 0x20, 0x00, 0x4A, 0x14, 0x00, 
            0xC1, 0x34, 0x00, 0x6C, 0x1D, 0x00, 0x47, 0x13, 
            0x00, 0x4B, 0x14, 0x00, 0x4F, 0x15, 0x00, 0x75, 
            0x1F, 0x00, 0x7D, 0x21, 0x00, 0x4C, 0x14, 0x00, 
            0x7A, 0x20, 0x00, 0xC3, 0x33, 0x00, 0x77, 0x1F, 
            0x00, 0x4D, 0x14, 0x00, 0x55, 0x16, 0x00, 0x5D, 
            0x18, 0x00, 0xAB, 0x2C, 0x00, 0x4E, 0x14, 0x00, 
            0x5A, 0x17, 0x00, 0x6A, 0x1B, 0x00, 0x7E, 0x20, 
            0x00, 0x4F, 0x14, 0x00, 0x67, 0x1A, 0x00, 0x9B, 
            0x27, 0x00, 0xF7, 0x3E, 0x00, 0xCC, 0x33, 0x04, 
            0xC6, 0x4A, 0x04, 0xA1, 0x3C, 0x04, 0x8C, 0x34, 
            0x04, 0x87, 0x32, 0x04, 0x95, 0x37, 0x04, 0x90, 
            0x35, 0x04, 0x8B, 0x33, 0x04, 0xA4, 0x3C, 0x04, 
            0x9F, 0x3A, 0x04, 0x8F, 0x34, 0x04, 0xA0, 0x3A, 
            0x04, 0xA6, 0x3C, 0x04, 0x56, 0x1F, 0x04, 0x40, 
            0x17, 0x04, 0x43, 0x18, 0x04, 0x38, 0x14, 0x04, 
            0x49, 0x1A, 0x04, 0x8A, 0x31, 0x04, 0x71, 0x28, 
            0x04, 0x44, 0x18, 0x04, 0x6C, 0x26, 0x04, 0x39, 
            0x14, 0x04, 0xCB, 0x47, 0x04, 0x56, 0x1E, 0x04, 
            0x45, 0x18, 0x04, 0x7C, 0x2B, 0x04, 0x6B, 0x25, 
            0x04, 0x3A, 0x14, 0x04, 0x40, 0x16, 0x04, 0x46, 
            0x18, 0x04, 0x75, 0x28, 0x04, 0x58, 0x1E, 0x04, 
            0x64, 0x22, 0x04, 0x3B, 0x14, 0x04, 0x47, 0x18, 
            0x04, 0x59, 0x1E, 0x04, 0x74, 0x27, 0x04, 0xAD, 
            0x3A, 0x04, 0xEF, 0x50, 0x04, 0x3C, 0x14, 0x04, 
            0xF1, 0x50, 0x04, 0xAF, 0x3A, 0x04, 0x76, 0x27, 
            0x04, 0x5B, 0x1E, 0x04, 0x49, 0x18, 0x04, 0x3D, 
            0x14, 0x04, 0x68, 0x22, 0x04, 0x5C, 0x1E, 0x04, 
            0x7B, 0x28, 0x04, 0x4A, 0x18, 0x04, 0x44, 0x16, 
            0x04, 0x3E, 0x14, 0x04, 0x73, 0x25, 0x04, 0x86, 
            0x2B, 0x04, 0x4B, 0x18, 0x04, 0x5E, 0x1E, 0x04, 
            0xDF, 0x47, 0x04, 0x3F, 0x14, 0x04, 0x78, 0x26, 
            0x04, 0x4C, 0x18, 0x04, 0x7F, 0x28, 0x04, 0x9C, 
            0x31, 0x04, 0x53, 0x1A, 0x04, 0x40, 0x14, 0x04, 
            0x4D, 0x18, 0x04, 0x4A, 0x17, 0x04, 0x64, 0x1F, 
            0x04, 0x61, 0x1E, 0x04, 0x5E, 0x1D, 0x04, 0x41, 
            0x14, 0x04, 0x65, 0x1F, 0x04, 0x62, 0x1E, 0x04, 
            0x83, 0x28, 0x04, 0x97, 0x2E, 0x04, 0x4F, 0x18, 
            0x04, 0x42, 0x14, 0x04, 0x56, 0x1A, 0x04, 0x88, 
            0x29, 0x04, 0x7B, 0x25, 0x04, 0x46, 0x15
        })
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (OC01, Package (0x06)
        {
            0x01010000, 
            "CPU FSB", 
            0x2710, 
            0x9C40, 
            0x012D, 
            0x00010003
        })
        Name (OT00, Package (0x04)
        {
            0x01010000, 
            0x2710, 
            Zero, 
            One
        })
        Name (OC02, Package (0x06)
        {
            0x01060001, 
            "CPU Multiplier", 
            0x08, 
            0x18, 
            0x11, 
            0x00010003
        })
        Name (CPUM, Package (0x04)
        {
            0x01060001, 
            0x0A, 
            Zero, 
            Zero
        })
        Name (OC03, Package (0x06)
        {
            0x02010002, 
            "Memory Freq", 
            Zero, 
            Zero, 
            0x07, 
            0x00010000
        })
        Name (MEMO, Package (0x0B)
        {
            0x02010002, 
            0xD034, 
            Zero, 
            One, 
            "Auto", 
            "RESERVE", 
            "533 MHz", 
            "667 MHz", 
            "800 MHz", 
            "889 MHz", 
            "1067 MHz"
        })
        Name (OC04, Package (0x06)
        {
            0x07010003, 
            "PCI Express", 
            0x2328, 
            0x3A98, 
            0x3D, 
            0x00010000
        })
        Name (PCIO, Package (0x04)
        {
            0x07010003, 
            0x2328, 
            Zero, 
            One
        })
        Name (OC0A, Package (0x06)
        {
            0x0202000F, 
            "DRAM Voltage", 
            0x0708, 
            0x0992, 
            0x0E, 
            0x0001000F
        })
        Name (RAMV, Package (0x13)
        {
            0x0202000F, 
            0x0708, 
            0x02, 
            One, 
            "Auto", 
            "1.80V", 
            "1.85V", 
            "1.90V", 
            "1.95V", 
            "2.00V", 
            "2.05V", 
            "2.10V", 
            "2.15V", 
            "2.20V", 
            "2.25V", 
            "2.30V", 
            "2.35V", 
            "2.40V", 
            "2.45V"
        })
        Name (OC0D, Package (0x06)
        {
            0x0906000C, 
            "AI Overclock Tuner", 
            Zero, 
            0x04, 
            0x05, 
            0x00010003
        })
        Name (AITM, Package (0x09)
        {
            0x0906000C, 
            Zero, 
            One, 
            One, 
            "Manual", 
            "Auto", 
            "Standard", 
            "", 
            "AI N.O.S."
        })
        Name (OC0E, Package (0x06)
        {
            0x0806000D, 
            "NOS Mode", 
            Zero, 
            One, 
            0x02, 
            0x00010003
        })
        Name (NOSM, Package (0x06)
        {
            0x0806000D, 
            Zero, 
            Zero, 
            One, 
            "Auto", 
            "Manual"
        })
        Name (OC06, Package (0x06)
        {
            0x08050005, 
            "Turbo NOS", 
            0x67, 
            0x78, 
            0x07, 
            0x00010003
        })
        Name (AOC2, Package (0x0B)
        {
            0x08050005, 
            0x64, 
            Zero, 
            One, 
            "", 
            "103%", 
            "105%", 
            "107%", 
            "110%", 
            "115%", 
            "120%"
        })
        Name (OC0F, Package (0x06)
        {
            0x0806000E, 
            "Sensitivity", 
            Zero, 
            0x03, 
            0x04, 
            0x00010003
        })
        Name (SENS, Package (0x07)
        {
            0x0806000E, 
            Zero, 
            Zero, 
            One, 
            "Standard", 
            "Sensitive", 
            "Heavy load"
        })
        Name (EPTY, Package (0x04)
        {
            0x12345678, 
            0x06, 
            0x06, 
            Zero
        })
        Name (OBUF, Package (0x09)
        {
            OC01, 
            OC02, 
            OC03, 
            OC04, 
            OC06, 
            OC0A, 
            OC0D, 
            OC0E, 
            OC0F
        })
        Method (ASIF, 0, NotSerialized)
        {
            Return (MBIF)
        }

        Method (OCIF, 0, NotSerialized)
        {
            Return (OBUF)
        }

        Method (GPRE, 1, NotSerialized)
        {
            If (Arg0)
            {
                OCOP (0x01010000)
                Store (ASB1, Index (PREB, One))
                OCOP (0x01060001)
                Store (ASB1, Index (PREB, 0x03))
                OCOP (0x02010002)
                Store (ASB1, Index (PREB, 0x05))
                OCOP (0x07010003)
                Store (ASB1, Index (PREB, 0x07))
                OCOP (0x0202000F)
                Store (ASB1, Index (PREB, 0x09))
                OCOP (0x0906000C)
                Store (ASB1, Index (PREB, 0x0B))
                OCOP (0x0806000D)
                Store (ASB1, Index (PREB, 0x0D))
                OCOP (0x0806000E)
                Store (ASB1, Index (PREB, 0x0F))
                OCOP (0x08050005)
                Store (ASB1, Index (PREB, 0x11))
            }
            Else
            {
                Store (DerefOf (Index (G3T0, 0x03)), Index (PREB, One))
                Store (DerefOf (Index (G3T2, 0x03)), Index (PREB, 0x03))
                Store (DerefOf (Index (G322, 0x03)), Index (PREB, 0x05))
                Store (DerefOf (Index (G340, 0x03)), Index (PREB, 0x07))
                Store (DerefOf (Index (G321, 0x03)), Index (PREB, 0x09))
                Store (DerefOf (Index (G9T0, 0x03)), Index (PREB, 0x0B))
                Store (Zero, Index (PREB, 0x0D))
                Store (DerefOf (Index (G8T1, 0x03)), Index (PREB, 0x0F))
                Store (DerefOf (Index (G8T2, 0x03)), Index (PREB, 0x11))
            }

            Return (PREB)
        }

        Name (PREB, Package (0x12)
        {
            0x01010000, 
            Zero, 
            0x01060001, 
            Zero, 
            0x02010002, 
            Zero, 
            0x07010003, 
            Zero, 
            0x0202000F, 
            Zero, 
            0x0906000C, 
            Zero, 
            0x0806000D, 
            Zero, 
            0x08050005, 
            Zero, 
            0x0806000E, 
            Zero
        })
        Method (OCOP, 1, NotSerialized)
        {
            Store (One, ASB0)
            Name (_T_0, Zero)
            Store (Arg0, _T_0)
            If (LEqual (_T_0, 0x01010000))
            {
                GIT3 (0x03010011)
                Store (ASB1, Index (OT00, One))
                Store (ASB1, Index (OT00, 0x02))
                Return (OT00)
            }
            Else
            {
                If (LEqual (_T_0, 0x01060001))
                {
                    GIT3 (0x03060013)
                    Store (ASB1, Index (CPUM, One))
                    Return (CPUM)
                }
                Else
                {
                    If (LEqual (_T_0, 0x02010002))
                    {
                        GIT3 (0x03080031)
                        Store (ASB1, Index (MEMO, 0x02))
                        Return (MEMO)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x07010003))
                        {
                            GIT3 (0x03810051)
                            Store (ASB1, Index (PCIO, 0x02))
                            Return (PCIO)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x0202000F))
                            {
                                GIT3 (0x03820032)
                                Store (ASB1, Index (RAMV, 0x02))
                                Return (RAMV)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x0906000C))
                                {
                                    GIT9 (0x09080000)
                                    Store (ASB1, Index (AITM, 0x02))
                                    Return (AITM)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x0806000D))
                                    {
                                        GIT8 (0x08080001)
                                        If (LGreater (ASB1, Zero))
                                        {
                                            Store (One, ASB1)
                                        }
                                        Else
                                        {
                                            Store (Zero, ASB1)
                                        }

                                        Store (ASB1, Index (NOSM, 0x02))
                                        Return (NOSM)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x0806000E))
                                        {
                                            GIT8 (0x08080001)
                                            If (LGreater (ASB1, Zero))
                                            {
                                                Decrement (ASB1)
                                            }

                                            Store (ASB1, Index (SENS, 0x02))
                                            Return (SENS)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x08050005))
                                            {
                                                GIT8 (0x08080002)
                                                Store (ASB1, Index (AOC2, 0x02))
                                                Return (AOC2)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Return (EPTY)
        }

        Name (NOSF, Zero)
        Method (PROC, 3, NotSerialized)
        {
            Store (One, ASB0)
            ShiftRight (Arg0, 0x10, Local0)
            Name (_T_0, Zero)
            Store (Arg0, _T_0)
            If (LEqual (_T_0, 0x01010000))
            {
                SIT3 (0x03010011, Arg1, Arg2)
            }
            Else
            {
                If (LEqual (_T_0, 0x01060001))
                {
                    SIT3 (0x03060013, Arg1, Arg2)
                }
                Else
                {
                    If (LEqual (_T_0, 0x02010002))
                    {
                        SIT3 (0x03080031, Arg1, Arg2)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x07010003))
                        {
                            SIT3 (0x03810051, Arg1, Arg2)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x0202000F))
                            {
                                Or (Arg1, ShiftLeft (Arg2, 0x08), Local0)
                                Store (Local0, DBGX)
                                SIT3 (0x03820032, Arg1, Arg2)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x0906000C))
                                {
                                    SIT9 (0x09080000, Arg1, Arg2)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x0806000D))
                                    {
                                        If (LEqual (Arg1, Zero))
                                        {
                                            SIT8 (0x08080001, Zero, Arg2)
                                            Store (Zero, NOSF)
                                        }
                                        Else
                                        {
                                            Store (One, NOSF)
                                        }
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x0806000E))
                                        {
                                            If (NOSF)
                                            {
                                                Add (Arg1, One, Local0)
                                                SIT8 (0x08080001, Local0, Arg2)
                                            }
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x08050005))
                                            {
                                                SIT8 (0x08080002, Arg1, Arg2)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Return (ASB0)
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G4T0, Package (0x04)
        {
            0x04060000, 
            " ASUS Advanced Q-Fan control", 
            0x40000000, 
            Zero
        })
        Name (G4T1, Package (0x0A)
        {
            0x04080011, 
            " FAN profile", 
            0x00100001, 
            0x03, 
            0x05, 
            "Disabled", 
            "Performance", 
            "Optimal", 
            "Silent", 
            "Ultra Silent"
        })
        Name (G4T2, Package (0x09)
        {
            0x04080011, 
            " FAN profile", 
            0x00100001, 
            0x03, 
            0x04, 
            "Disabled", 
            "Performance", 
            "Optimal", 
            "Silent"
        })
        Name (GR41, Package (0x02)
        {
            G4T0, 
            G4T1
        })
        Name (GR42, Package (0x02)
        {
            G4T0, 
            G4T2
        })
        Method (GIT4, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (GNVS (0x2780), ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x11))
                {
                    Store (GNVS (0x3510), ASB1)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }

        Method (SIT4, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                If (LNot (LEqual (GNVS (0x3510), Arg1)))
                {
                    SNVS (0x3510, Arg1)
                    Store (0x77, PAR0)
                    ISMI (0x88)
                }
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G5T0, Package (0x07)
        {
            0x05080000, 
            "AI Profile", 
            Zero, 
            Zero, 
            0x02, 
            "AUTO", 
            Zero
        })
        Name (GRP5, Package (0x01)
        {
            G5T0
        })
        Method (GIT5, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (One, ASB1)
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }

        Method (SIT5, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (0x03, ASB0)
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G6T1, Package (0x07)
        {
            0x06020011, 
            "Vcore Voltage", 
            0x20000000, 
            Zero, 
            0x0352, 
            0x02EE, 
            0x02
        })
        Name (G6T2, Package (0x07)
        {
            0x06030012, 
            "CPU Temperature", 
            0x20000000, 
            Zero, 
            0x0258, 
            0x015E, 
            0x02
        })
        Name (G6T3, Package (0x07)
        {
            0x06040013, 
            "CPU Fan Speed", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x1900, 
            0x02
        })
        Name (G6T4, Package (0x07)
        {
            0x06040073, 
            "Chassis Fan Speed", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x1900, 
            0x02
        })
        Name (G6T5, Package (0x07)
        {
            0x060400C3, 
            "Power Fan Speed", 
            0x20000000, 
            Zero, 
            0x0320, 
            0x1900, 
            0x02
        })
        Name (G6T6, Package (0x07)
        {
            0x06020061, 
            "+12V Voltage", 
            0x20000000, 
            0x2EE0, 
            0x27D8, 
            0x0E10, 
            0x02
        })
        Name (G6T7, Package (0x07)
        {
            0x06020062, 
            "+5V Voltage", 
            0x20000000, 
            0x1388, 
            0x1194, 
            0x03E8, 
            0x02
        })
        Name (G6T8, Package (0x07)
        {
            0x06020063, 
            "+3.3V Voltage", 
            0x20000000, 
            0x0CE4, 
            0x0B9A, 
            0x0294, 
            0x02
        })
        Name (G6T9, Package (0x07)
        {
            0x06030074, 
            "MB Temperature", 
            0x20000000, 
            Zero, 
            0x01C2, 
            0x01F4, 
            0x02
        })
        Name (GRP6, Package (0x09)
        {
            G6T1, 
            G6T2, 
            G6T3, 
            G6T4, 
            G6T5, 
            G6T6, 
            G6T7, 
            G6T8, 
            G6T9
        })
        Method (GIT6, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Store (0x0600, ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x12))
                {
                    Store (0x0601, ASB1)
                }
                Else
                {
                    If (LEqual (_T_0, 0x13))
                    {
                        Store (0x0602, ASB1)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x73))
                        {
                            Store (0x0603, ASB1)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0xC3))
                            {
                                Store (0x0604, ASB1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x61))
                                {
                                    Store (0x0605, ASB1)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x62))
                                    {
                                        Store (0x0606, ASB1)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x63))
                                        {
                                            Store (0x0607, ASB1)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x74))
                                            {
                                                Store (0x0608, ASB1)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        Method (SIT6, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, 0x11))
            {
                Store (0x0600, DBG8)
            }
            Else
            {
                If (LEqual (_T_0, 0x12))
                {
                    Store (0x0601, DBG8)
                }
                Else
                {
                    If (LEqual (_T_0, 0x13))
                    {
                        Store (0x0602, DBG8)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x73))
                        {
                            Store (0x0603, DBG8)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0xC3))
                            {
                                Store (0x0604, DBG8)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x61))
                                {
                                    Store (0x0605, DBG8)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x62))
                                    {
                                        Store (0x0606, DBG8)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x63))
                                        {
                                            Store (0x0607, DBG8)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x74))
                                            {
                                                Store (0x0608, DBG8)
                                            }
                                            Else
                                            {
                                                Store (Zero, ASB0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G8T1, Package (0x09)
        {
            0x08080001, 
            "N.O.S. sensitivity", 
            Zero, 
            Zero, 
            0x04, 
            "Auto", 
            "Standard", 
            "Sensitive", 
            "Heavy load"
        })
        Name (G8T2, Package (0x0C)
        {
            0x08080002, 
            "N.O.S. profile", 
            Zero, 
            One, 
            0x07, 
            Zero, 
            "103%", 
            "105%", 
            "107%", 
            "110%", 
            "115%", 
            "120%"
        })
        Name (GRP8, Package (0x02)
        {
            G8T1, 
            G8T2
        })
        Name (TEMP, Zero)
        Method (GIT8, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, One))
            {
                Store (GNVS (0x2564), ASB1)
            }
            Else
            {
                If (LEqual (_T_0, 0x02))
                {
                    Store (GNVS (0x34EB), ASB1)
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }

        Method (SIT8, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, One))
            {
                If (LNot (LEqual (GNVS (0x2564), Arg1)))
                {
                    If (And (Arg2, One))
                    {
                        SNVS (0x2564, Arg1)
                    }

                    Or (ASB0, 0x02, ASB0)
                }
            }
            Else
            {
                If (LEqual (_T_0, 0x02))
                {
                    If (LNot (LEqual (GNVS (0x34EB), Arg1)))
                    {
                        If (And (Arg2, One))
                        {
                            SNVS (0x34EB, Arg1)
                        }

                        Or (ASB0, 0x02, ASB0)
                    }
                }
                Else
                {
                    Store (Zero, ASB0)
                }
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (G9T0, Package (0x0A)
        {
            0x09080000, 
            "AI Tunning", 
            Zero, 
            One, 
            0x05, 
            "Manual", 
            "Auto", 
            "Standard", 
            Zero, 
            "AI N.O.S"
        })
        Name (GRP9, Package (0x01)
        {
            G9T0
        })
        Method (GIT9, 1, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                Store (GNVS (0x34E3), ASB1)
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }

        Method (SIT9, 3, NotSerialized)
        {
            Name (_T_0, Zero)
            Store (And (Arg0, 0xFFFF), _T_0)
            If (LEqual (_T_0, Zero))
            {
                If (LNot (LEqual (GNVS (0x34E3), Arg1)))
                {
                    If (And (Arg2, One))
                    {
                        SNVS (0x34E3, Arg1)
                    }

                    Or (ASB0, 0x02, ASB0)
                }
            }
            Else
            {
                Store (Zero, ASB0)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (GAT1, Package (0x04)
        {
            0x0A070001, 
            "Music Alarm", 
            Zero, 
            Zero
        })
        Name (GAT2, Package (0x04)
        {
            0x0A070002, 
            "Sunday", 
            Zero, 
            One
        })
        Name (GAT3, Package (0x04)
        {
            0x0A070003, 
            "Monday", 
            Zero, 
            One
        })
        Name (GAT4, Package (0x04)
        {
            0x0A070004, 
            "Tuesday", 
            Zero, 
            One
        })
        Name (GAT5, Package (0x04)
        {
            0x0A070005, 
            "Wednesday", 
            Zero, 
            One
        })
        Name (GAT6, Package (0x04)
        {
            0x0A070006, 
            "Thursday", 
            Zero, 
            One
        })
        Name (GAT7, Package (0x04)
        {
            0x0A070007, 
            "Friday", 
            Zero, 
            One
        })
        Name (GAT8, Package (0x04)
        {
            0x0A070008, 
            "Saturday", 
            Zero, 
            One
        })
        Name (GAT9, Package (0x07)
        {
            0x0A060009, 
            "Alarm Hour", 
            Zero, 
            0x0C, 
            Zero, 
            One, 
            0x18
        })
        Name (GATA, Package (0x07)
        {
            0x0A06000A, 
            "Alarm Mins", 
            Zero, 
            Zero, 
            Zero, 
            One, 
            0x3C
        })
        Name (GATB, Package (0x0A)
        {
            0x0A08000B, 
            "Music Alarm Drive", 
            Zero, 
            0x03, 
            0x05, 
            "Primary IDE Master", 
            "Primary IDE Slave", 
            "Secondary IDE Master", 
            "Secondary IDE Slave", 
            "JMicron JMB363 IDE"
        })
        Name (GATC, Package (0x07)
        {
            0x0A06000C, 
            "Starting Track", 
            Zero, 
            0x10, 
            Zero, 
            One, 
            0x20
        })
        Name (GATD, Package (0x08)
        {
            0x0A08000D, 
            "Repeat", 
            Zero, 
            Zero, 
            0x03, 
            "none", 
            "Single", 
            "All"
        })
        Name (GATE, Package (0x09)
        {
            0x0A08000E, 
            "Length", 
            Zero, 
            Zero, 
            0x04, 
            "10 mins", 
            "20 mins", 
            "30 mins", 
            "1 hour"
        })
        Name (GATF, Package (0x07)
        {
            0x0A06000F, 
            "Volume", 
            Zero, 
            0x0F, 
            Zero, 
            One, 
            0x20
        })
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (GBT0, Package (0x07)
        {
            0x0B060001, 
            "System performance", 
            0x00400000, 
            Zero, 
            0x03, 
            One, 
            0x04
        })
        Name (GRPB, Package (0x01)
        {
            GBT0
        })
        Name (VEAL, Zero)
        Method (GITB, 1, NotSerialized)
        {
            Store (VEAL, ASB1)
        }

        Method (SITB, 3, NotSerialized)
        {
            If (LEqual (And (Arg2, 0xFFFF), One))
            {
                And (Arg1, 0xFFFF, VEAL)
                Store (VEAL, ASB1)
                Store (VEAL, PAR0)
                ISMI (0x88)
            }
        }
    }

    OperationRegion (_SB.PCI0.SBRG.PIX0, PCI_Config, 0x60, 0x0C)
    Field (\_SB.PCI0.SBRG.PIX0, ByteAcc, NoLock, Preserve)
    {
        PIRA,   8, 
        PIRB,   8, 
        PIRC,   8, 
        PIRD,   8, 
        Offset (0x08), 
        PIRE,   8, 
        PIRF,   8, 
        PIRG,   8, 
        PIRH,   8
    }

    Scope (_SB)
    {
        Name (BUFA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared)
                {15}
        })
        CreateWordField (BUFA, One, IRA0)
        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, One)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRA, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSA)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRA, 0x80, PIRA)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRA, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRA)
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x02)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRB, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSB)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRB, 0x80, PIRB)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRB, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRB)
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x03)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRC, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSC)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRC, 0x80, PIRC)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRC, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRC)
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x04)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRD, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSD)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRD, 0x80, PIRD)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRD, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRD)
            }
        }

        Device (LNKE)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x05)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRE, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSE)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRE, 0x80, PIRE)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRE, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRE)
            }
        }

        Device (LNKF)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x06)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRF, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSF)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRF, 0x80, PIRF)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRF, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRF)
            }
        }

        Device (LNKG)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x07)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRG, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSG)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRG, 0x80, PIRG)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRG, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRG)
            }
        }

        Device (LNKH)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x08)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRH, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSH)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRH, 0x80, PIRH)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRH, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRH)
            }
        }
    }

    Scope (_SB)
    {
        Name (XCPD, Zero)
        Name (XNPT, One)
        Name (XCAP, 0x02)
        Name (XDCP, 0x04)
        Name (XDCT, 0x08)
        Name (XDST, 0x0A)
        Name (XLCP, 0x0C)
        Name (XLCT, 0x10)
        Name (XLST, 0x12)
        Name (XSCP, 0x14)
        Name (XSCT, 0x18)
        Name (XSST, 0x1A)
        Name (XRCT, 0x1C)
        Mutex (MUTE, 0x00)
        Method (RBPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, One)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (RWPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (RDPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (WBPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x0FFF)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, One)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (WWPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (WDPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (RWDP, 3, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            And (XCFG, Arg2, Local1)
            Or (Local1, Arg1, XCFG)
            Release (MUTE)
        }

        Method (RPME, 1, NotSerialized)
        {
            Add (Arg0, 0x84, Local0)
            Store (RDPE (Local0), Local1)
            If (LEqual (Local1, Ones))
            {
                Return (Zero)
            }
            Else
            {
                If (LAnd (Local1, 0x00010000))
                {
                    WDPE (Local0, And (Local1, 0x00010000))
                    Return (One)
                }

                Return (Zero)
            }
        }
    }

    OperationRegion (SMRG, SystemIO, 0x0400, 0x10)
    Field (SMRG, ByteAcc, NoLock, Preserve)
    {
        HSTS,   8, 
        SSTS,   8, 
        HSTC,   8, 
        HCMD,   8, 
        HADR,   8, 
        HDT0,   8, 
        HDT1,   8, 
        BLKD,   8
    }

    Field (SMRG, ByteAcc, NoLock, Preserve)
    {
        Offset (0x05), 
        HDTW,   16
    }

    Method (SCMD, 4, Serialized)
    {
        Store (0x05, Local0)
        While (Decrement (Local0))
        {
            Store (0xFFFF, Local1)
            While (LAnd (HSTS, Decrement (Local1)))
            {
                Store (0xFE, HSTS)
                Stall (0x0A)
            }

            Store (HSTC, Local2)
            Store (Arg0, HADR)
            Store (Arg1, HCMD)
            Store (Arg2, HDTW)
            Store (Arg3, HSTC)
            Store (0xFFFF, Local1)
            While (Decrement (Local1))
            {
                If (And (HSTS, 0x0C))
                {
                    Store (One, Local1)
                }

                If (LEqual (And (HSTS, 0x03), 0x02))
                {
                    Return (HDTW)
                }

                Stall (0x0A)
            }

            Store (0x42, HSTC)
            Store (0xFFFF, Local1)
            While (Decrement (Local1))
            {
                If (And (HSTS, 0x10))
                {
                    Store (One, Local1)
                }

                Stall (0x0A)
            }

            Store (Zero, HSTC)
        }

        Return (Ones)
    }

    Method (SBYT, 2, NotSerialized)
    {
        SCMD (Arg0, Arg1, Zero, 0x44)
    }

    Method (WBYT, 3, NotSerialized)
    {
        SCMD (Arg0, Arg1, Arg2, 0x48)
    }

    Method (WWRD, 3, NotSerialized)
    {
        SCMD (Arg0, Arg1, Arg2, 0x4C)
    }

    Method (RSBT, 2, NotSerialized)
    {
        Or (Arg0, One, Arg0)
        Return (And (SCMD (Arg0, Arg1, Zero, 0x44), 0xFF))
    }

    Method (RBYT, 2, NotSerialized)
    {
        Or (Arg0, One, Arg0)
        Return (And (SCMD (Arg0, Arg1, Zero, 0x48), 0xFF))
    }

    Method (RWRD, 2, NotSerialized)
    {
        Or (Arg0, One, Arg0)
        Return (SCMD (Arg0, Arg1, Zero, 0x4C))
    }

    Method (RBLK, 3, NotSerialized)
    {
        Or (Arg0, One, Local0)
        SCMD (Local0, Arg1, Arg2, 0x54)
        Store (HSTC, Local0)
        Store (HDT0, Local0)
        Add (Local0, One, Local7)
        Name (RBUF, Buffer (Local7) {})
        Store (Zero, Local1)
        While (Local0)
        {
            Store (BLKD, Index (RBUF, Local1))
            Decrement (Local0)
            Increment (Local1)
        }

        Return (RBUF)
    }

    Method (WBLK, 4, NotSerialized)
    {
        Store (HSTC, Local0)
        Store (Zero, Local0)
        While (LNot (LGreater (Local0, Arg2)))
        {
            Store (DerefOf (Index (Arg3, Local0)), BLKD)
            Increment (Local0)
        }

        And (Arg0, 0xFE, Local0)
        SCMD (Local0, Arg1, Arg2, 0x54)
    }

    Name (HBAS, Zero)
    Name (HLBA, Zero)
    Name (HDEV, Zero)
    OperationRegion (REFP, SystemIO, 0x61, One)
    Field (REFP, ByteAcc, NoLock, Preserve)
    {
        P061,   8
    }

    Method (FZHD, 0, NotSerialized)
    {
        Store (0x80, Local0)
        Store (DMAX, Local1)
        While (LNot (LGreater (Local0, Local1)))
        {
            And (Local0, 0x7F, Local3)
            Store (One, Local2)
            ShiftLeft (Local2, Local3, Local2)
            If (LNot (And (\_SB.PCI0.HFZF, Local2)))
            {
                If (FZOD (Local0))
                {
                    Or (\_SB.PCI0.HFZF, Local2, \_SB.PCI0.HFZF)
                }
            }

            Increment (Local0)
        }
    }

    Method (FZOD, 1, NotSerialized)
    {
        GHET (Arg0)
        If (LEqual (HBAS, Zero))
        {
            Return (One)
        }

        If (LEqual (HDEV, Zero))
        {
            Return (One)
        }

        Store (HDEV, Local1)
        And (Local1, 0x10, Local1)
        If (LEqual (Local1, Zero))
        {
            Return (One)
        }

        WFCF ()
        SDRV ()
        Add (HBAS, 0x07, Local1)
        OperationRegion (HRGS, SystemIO, Local1, One)
        Field (HRGS, ByteAcc, NoLock, Preserve)
        {
            SREG,   8
        }

        Store (SREG, Local1)
        And (Local1, 0x80, Local1)
        If (Local1)
        {
            Return (Zero)
        }

        Add (HBAS, 0x07, Local1)
        OperationRegion (HRGC, SystemIO, Local1, One)
        Field (HRGC, ByteAcc, NoLock, Preserve)
        {
            CREG,   8
        }

        Store (0xF5, CREG)
        If (WFCF ())
        {
            Add (HBAS, 0x07, Local0)
            Store (SREG, Local1)
            Return (LNot (And (Local1, One)))
        }
        Else
        {
            Return (Zero)
        }
    }

    OperationRegion (DBGA, SystemIO, 0x80, 0x04)
    Field (DBGA, DWordAcc, NoLock, Preserve)
    {
        DB32,   32
    }

    Method (GHET, 1, NotSerialized)
    {
        And (Arg0, 0x7F, Local0)
        ShiftLeft (Local0, 0x05, Local0)
        Add (Local0, HPTA, Local0)
        OperationRegion (HDPT, SystemMemory, Local0, 0x20)
        Field (HDPT, ByteAcc, NoLock, Preserve)
        {
            HP00,   16, 
            Offset (0x04), 
            HP04,   8, 
            Offset (0x12), 
            HP0C,   8
        }

        Store (HP00, HBAS)
        Store (HP04, HLBA)
        Store (HP0C, HDEV)
    }

    Method (SDRV, 0, NotSerialized)
    {
        Add (HBAS, 0x06, Local0)
        OperationRegion (HRGH, SystemIO, Local0, One)
        Field (HRGH, ByteAcc, NoLock, Preserve)
        {
            HREG,   8
        }

        Store (HLBA, HREG)
    }

    Method (WFCF, 0, NotSerialized)
    {
        SDRV ()
        Add (HBAS, One, Local0)
        OperationRegion (HRGE, SystemIO, Local0, One)
        Field (HRGE, ByteAcc, NoLock, Preserve)
        {
            EREG,   8
        }

        Store (Zero, EREG)
        Add (HBAS, 0x07, Local1)
        OperationRegion (HRGC, SystemIO, Local1, One)
        Field (HRGC, ByteAcc, NoLock, Preserve)
        {
            CREG,   8
        }

        Store (0x28, Local0)
        While (Local0)
        {
            And (CREG, One, Local2)
            If (Local2)
            {
                Return (Zero)
            }

            WFZF (Local1)
            And (CREG, 0x80, Local2)
            If (LEqual (Local2, Zero))
            {
                Return (One)
            }

            Decrement (Local0)
        }

        Return (Zero)
    }

    Method (WFZF, 1, NotSerialized)
    {
        OperationRegion (HRGC, SystemIO, Arg0, One)
        Field (HRGC, ByteAcc, NoLock, Preserve)
        {
            CREG,   8
        }

        Store (0xFFFF, Local1)
        Store (CREG, Local2)
        And (Local2, 0x80, Local2)
        If (LEqual (Local2, Zero))
        {
            Return (Zero)
        }

        While (Local1)
        {
            Stall (0x0F)
            Decrement (Local1)
            If (LEqual (Local1, Zero))
            {
                Return (Zero)
            }

            Store (CREG, Local2)
            And (Local2, 0x80, Local2)
            If (LEqual (Local2, Zero))
            {
                Return (Zero)
            }

            Decrement (Local1)
        }
    }

    Scope (_SB.PCI0)
    {
        Name (HFZF, 0xFFFF)
        Method (HWAK, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x03))
            {
                Store (Zero, HFZF)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.SIOR)
    {
        Method (HWV0, 0, NotSerialized)
        {
            Return (Multiply (VCOR, 0x08))
        }

        Method (HWV1, 0, NotSerialized)
        {
            Return (Multiply (V12V, 0x08))
        }

        Method (HWV3, 0, NotSerialized)
        {
            Return (Multiply (V33V, 0x08))
        }

        Method (HWV5, 0, NotSerialized)
        {
            Return (Multiply (V50V, 0x08))
        }

        Method (HWT0, 0, NotSerialized)
        {
            Store (MBTE, Local1)
            Multiply (Local1, 0x0A, Local1)
            Return (Local1)
        }

        Method (HWT1, 0, NotSerialized)
        {
            Store (One, BSEL)
            Store (TSR1, Local1)
            Multiply (Local1, 0x0A, Local1)
            Store (TSR2, Local2)
            Multiply (Local2, 0x05, Local2)
            Add (Local1, Local2, Local1)
            Return (Local1)
        }

        Method (HWT2, 0, NotSerialized)
        {
            Store (0x02, BSEL)
            Store (TSR1, Local1)
            Multiply (Local1, 0x0A, Local1)
            Store (TSR2, Local2)
            Multiply (Local2, 0x05, Local2)
            Add (Local1, Local2, Local1)
            Return (Local1)
        }

        OperationRegion (DBGE, SystemIO, 0x80, 0x04)
        Field (DBGE, WordAcc, NoLock, Preserve)
        {
            DBGG,   22
        }

        Method (HWF0, 0, NotSerialized)
        {
            Store (FAN1, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x20, Local1)
            ShiftRight (Local1, 0x05, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FDR1, 0x30, Local2)
            ShiftRight (Local2, 0x04, Local2)
            Add (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    Add (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x05, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xDF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0xCF, Local4)
                    ShiftLeft (Local2, 0x04, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN1, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x05, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xDF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0xCF, Local4)
                    ShiftLeft (Local2, 0x04, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN1, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF1, 0, NotSerialized)
        {
            Store (FAN2, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x40, Local1)
            ShiftRight (Local1, 0x06, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FDR1, 0xC0, Local2)
            ShiftRight (Local2, 0x06, Local2)
            Add (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    Add (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x06, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xBF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0x3F, Local4)
                    ShiftLeft (Local2, 0x06, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN2, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x06, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0xBF, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FDR1, Local4)
                    And (Local4, 0x3F, Local4)
                    ShiftLeft (Local2, 0x06, Local2)
                    Or (Local4, One, Local4)
                    Or (Local4, Local2, FDR1)
                    Sleep (0x012C)
                    Store (FAN2, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF2, 0, NotSerialized)
        {
            Store (FAN3, Local0)
            Store (Zero, BSEL)
            And (FD21, 0x80, Local1)
            ShiftRight (Local1, 0x07, Local1)
            Multiply (Local1, 0x04, Local1)
            Divide (FD13, 0x40, Local2, Local3)
            Add (Local1, Local3, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    If (LEqual (Local0, 0xFF))
                    {
                        Store (0x07, Local1)
                    }
                    Else
                    {
                        Add (Local1, One, Local1)
                    }

                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FD13, Local3)
                    And (Local3, 0x3F, Local3)
                    Multiply (Local2, 0x40, Local2)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FD13)
                    If (LNot (LEqual (Local0, 0xFF)))
                    {
                        Sleep (0x012C)
                    }

                    Store (FAN3, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD21, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD21)
                    Store (FD13, Local3)
                    And (Local3, 0x3F, Local3)
                    Multiply (Local2, 0x40, Local2)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FD13)
                    Sleep (0x012C)
                    Store (FAN3, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF3, 0, NotSerialized)
        {
            Store (Zero, BSEL)
            Store (CFN3, Local0)
            And (FD15, 0x80, Local1)
            ShiftRight (Local1, 0x05, Local1)
            And (FND4, 0x03, Local2)
            Or (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    If (LEqual (Local0, 0xFF))
                    {
                        Store (0x07, Local1)
                    }
                    Else
                    {
                        Add (Local1, One, Local1)
                    }

                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD15, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD15)
                    Store (FND4, Local3)
                    And (Local3, 0xFC, Local3)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FND4)
                    If (LNot (LEqual (Local0, 0xFF)))
                    {
                        Sleep (0x012C)
                    }

                    Store (CFN3, Local0)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x07, Local3)
                    Store (FD15, Local4)
                    And (Local4, 0x7F, Local4)
                    Or (Local3, Local4, FD15)
                    Store (FND4, Local3)
                    And (Local3, 0xFC, Local3)
                    Add (Local3, Local2, Local2)
                    Store (Local2, FND4)
                    Sleep (0x012C)
                    Store (CFN3, Local0)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        Method (HWF4, 0, NotSerialized)
        {
            Store (0x05, BSEL)
            Store (FAN4, Local0)
            Store (Zero, BSEL)
            And (FND4, 0x80, Local1)
            ShiftRight (Local1, 0x08, Local1)
            Multiply (Local1, 0x04, Local1)
            And (FND4, 0x0C, Local2)
            ShiftRight (Local2, 0x02, Local2)
            Add (Local1, Local2, Local1)
            While (LOr (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)), LAnd (LLess (Local0, 0x64), LGreater (Local1, Zero))))
            {
                If (LAnd (LGreater (Local0, 0xE6), LLess (Local1, 0x07)))
                {
                    If (LEqual (Local0, 0xFF))
                    {
                        Store (0x07, Local1)
                    }
                    Else
                    {
                        Add (Local1, One, Local1)
                    }

                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x08, Local3)
                    ShiftLeft (Local2, 0x02, Local2)
                    Store (FND4, Local4)
                    And (Local4, 0x73, Local4)
                    Or (Local3, Local2, Local3)
                    Or (Local3, Local4, FND4)
                    If (LNot (LEqual (Local0, 0xFF)))
                    {
                        Sleep (0x012C)
                    }

                    Store (0x05, BSEL)
                    Store (FAN4, Local0)
                    Store (Zero, BSEL)
                }
                Else
                {
                    Subtract (Local1, One, Local1)
                    Divide (Local1, 0x04, Local2, Local3)
                    Store (Zero, BSEL)
                    ShiftLeft (Local3, 0x08, Local3)
                    ShiftLeft (Local2, 0x02, Local2)
                    Store (FND4, Local4)
                    And (Local4, 0x73, Local4)
                    Or (Local3, Local2, Local3)
                    Or (Local3, Local4, FND4)
                    Sleep (0x012C)
                    Store (0x05, BSEL)
                    Store (FAN4, Local0)
                    Store (Zero, BSEL)
                }
            }

            If (LAnd (LEqual (Local0, 0xFF), LEqual (Local1, 0x07)))
            {
                Return (Zero)
            }

            If (LAnd (LEqual (Local0, Zero), LEqual (Local1, Zero)))
            {
                Return (0xFFFF)
            }

            Store (One, Local2)
            While (Local1)
            {
                Multiply (Local2, 0x02, Local2)
                Decrement (Local1)
            }

            Multiply (Local0, Local2, Local0)
            Divide (0x00149970, Local0, Local1, Local0)
            Return (Local0)
        }

        OperationRegion (HWRE, SystemIO, IOHW, 0x0A)
        Field (HWRE, ByteAcc, NoLock, Preserve)
        {
            Offset (0x05), 
            HIDX,   8, 
            HDAT,   8
        }

        IndexField (HIDX, HDAT, ByteAcc, NoLock, Preserve)
        {
            Offset (0x04), 
            CHNM,   1, 
            CFNM,   1, 
            CHNS,   2, 
            CFNS,   2, 
            Offset (0x05), 
            SYST,   8, 
            TRGT,   8, 
            Offset (0x08), 
            SSDN,   8, 
            CSDN,   8, 
            SSUP,   8, 
            CSUP,   8, 
            Offset (0x20), 
            VCOR,   8, 
            V12V,   8, 
            Offset (0x23), 
            V33V,   8, 
            Offset (0x25), 
            V50V,   8, 
            Offset (0x27), 
            MBTE,   8, 
            FAN1,   8, 
            FAN2,   8, 
            FAN3,   8, 
            Offset (0x3F), 
            CFN3,   8, 
            Offset (0x47), 
            FDR1,   8, 
            Offset (0x4B), 
            FD13,   8, 
            FD15,   8, 
            Offset (0x4E), 
            BSEL,   3, 
            Offset (0x4F), 
            Offset (0x50), 
            TSR1,   8, 
                ,   7, 
            TSR2,   1, 
            Offset (0x53), 
            FAN4,   8, 
            Offset (0x59), 
            FND4,   8, 
            Offset (0x5D), 
            FD21,   8
        }
    }

    Scope (_SB.PCI0.SBRG.ASOC)
    {
        Name (CORV, Package (0x05)
        {
            0x06020000, 
            "Vcore Voltage", 
            0x0352, 
            0x0640, 
            One
        })
        Name (V3VV, Package (0x05)
        {
            0x06020001, 
            " +3.3 Voltage", 
            0x0B9A, 
            0x0E2E, 
            One
        })
        Name (V5VV, Package (0x05)
        {
            0x06020002, 
            " +5 Voltage", 
            0x1194, 
            0x157C, 
            One
        })
        Name (VV12, Package (0x05)
        {
            0x06020003, 
            " +12 Voltage", 
            0x27D8, 
            0x35E8, 
            One
        })
        Name (VPAR, Package (0x04)
        {
            Package (0x03)
            {
                Zero, 
                One, 
                Zero
            }, 

            Package (0x03)
            {
                0x22, 
                0x22, 
                Zero
            }, 

            Package (0x03)
            {
                0x16, 
                0x0A, 
                Zero
            }, 

            Package (0x03)
            {
                0x38, 
                0x0A, 
                Zero
            }
        })
        Name (VBUF, Package (0x05)
        {
            0x04, 
            CORV, 
            V3VV, 
            V5VV, 
            VV12
        })
        Method (VGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (^^SIOR.HWV0 ())
            }

            If (LEqual (Arg0, One))
            {
                Return (^^SIOR.HWV3 ())
            }

            If (LEqual (Arg0, 0x02))
            {
                Return (^^SIOR.HWV5 ())
            }

            If (LEqual (Arg0, 0x03))
            {
                Return (^^SIOR.HWV1 ())
            }
        }

        Name (CPUT, Package (0x05)
        {
            0x06030000, 
            "CPU Temperature", 
            0x0258, 
            0x03B6, 
            0x00010001
        })
        Name (MBTP, Package (0x05)
        {
            0x06030001, 
            "MB Temperature", 
            0x01C2, 
            0x03B6, 
            0x00010001
        })
        Name (TBUF, Package (0x03)
        {
            0x02, 
            CPUT, 
            MBTP
        })
        Method (TGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (^^SIOR.HWT1 ())
            }

            If (LEqual (Arg0, One))
            {
                Return (^^SIOR.HWT0 ())
            }
        }

        Name (CPUF, Package (0x05)
        {
            0x06040000, 
            "CPU FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (CHF1, Package (0x05)
        {
            0x06040001, 
            "CHASSIS1 FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (CHF2, Package (0x05)
        {
            0x06040002, 
            "CHASSIS2 FAN Speed", 
            0x04B0, 
            0x1C20, 
            0x00010001
        })
        Name (CHF3, Package (0x05)
        {
            0x06040003, 
            "CHASSIS3 FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (PWRF, Package (0x05)
        {
            0x06040004, 
            "POWER FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (FBUF, Package (0x06)
        {
            0x05, 
            CPUF, 
            CHF1, 
            CHF2, 
            CHF3, 
            PWRF
        })
        Method (FGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (^^SIOR.HWF1 ())
            }

            If (LEqual (Arg0, One))
            {
                Return (^^SIOR.HWF0 ())
            }

            If (LEqual (Arg0, 0x02))
            {
                Return (^^SIOR.HWF4 ())
            }

            If (LEqual (Arg0, 0x03))
            {
                Return (^^SIOR.HWF3 ())
            }

            If (LEqual (Arg0, 0x04))
            {
                Return (^^SIOR.HWF2 ())
            }
        }

        Method (VSIF, 0, NotSerialized)
        {
            Return (VBUF)
        }

        Method (RVLT, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (VGET (Local0), Local1)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), Zero)), Local2)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), One)), Local3)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), 0x02)), Local4)
            Multiply (Local1, Add (Local2, Local3), Local5)
            Divide (Local5, Local3, , Local5)
            Add (Local5, Local4, Local5)
            Return (Local5)
        }

        Method (SVLT, 1, NotSerialized)
        {
            And (DerefOf (Index (Arg0, Zero)), 0xFFFF, Local0)
            Store (DerefOf (Index (VBUF, Zero)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (Zero)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, One)), Index (DerefOf (Index (VBUF, Local0)), One))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (VBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (VBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (VBUF, Local0)), 0x04))
            Return (One)
        }

        Method (TSIF, 0, NotSerialized)
        {
            Return (TBUF)
        }

        Method (RTMP, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (TGET (Local0), Local1)
            Return (Local1)
        }

        Method (STMP, 1, NotSerialized)
        {
            Store (And (DerefOf (Index (Arg0, Zero)), 0xFFFF), Local0)
            Store (DerefOf (Index (TBUF, Zero)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (Zero)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, One)), Index (DerefOf (Index (TBUF, Local0)), One))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (TBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (TBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (TBUF, Local0)), 0x04))
            Return (One)
        }

        Method (FSIF, 0, NotSerialized)
        {
            Return (FBUF)
        }

        Method (RFAN, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (FGET (Local0), Local1)
            Return (Local1)
        }

        Method (SFAN, 1, NotSerialized)
        {
            And (DerefOf (Index (Arg0, Zero)), 0xFFFF, Local0)
            Store (DerefOf (Index (FBUF, Zero)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (Zero)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, One)), Index (DerefOf (Index (FBUF, Local0)), One))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (FBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (FBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (FBUF, Local0)), 0x04))
            Return (One)
        }
    }

    Scope (_SB.PCI0)
    {
        Device (GFX0)
        {
            Name (_ADR, 0x00020000)
            OperationRegion (IGDM, SystemMemory, 0x3EE9E0E4, 0x2000)
            Field (IGDM, AnyAcc, NoLock, Preserve)
            {
                SIGN,   128, 
                SIZE,   32, 
                OVER,   32, 
                SVER,   256, 
                VVER,   128, 
                GVER,   128, 
                MBOX,   32, 
                Offset (0xF0), 
                IBTT,   4, 
                IPSC,   2, 
                IPAT,   4, 
                IBIA,   3, 
                IBLC,   2, 
                Offset (0xF2), 
                ITVF,   4, 
                ITVM,   4, 
                IDVM,   1, 
                IDVS,   2, 
                ISSC,   1, 
                Offset (0xF4), 
                Offset (0x200), 
                SCIE,   1, 
                GEFC,   4, 
                GXFC,   3, 
                GESF,   8, 
                Offset (0x204), 
                PARM,   32
            }

            OperationRegion (TCOI, SystemIO, TOBS, 0x08)
            Field (TCOI, WordAcc, NoLock, Preserve)
            {
                Offset (0x04), 
                    ,   9, 
                SCIS,   1, 
                Offset (0x06)
            }

            Method (GSCI, 0, NotSerialized)
            {
                If (LEqual (GEFC, 0x04))
                {
                    Store (GBDA (), GXFC)
                }

                If (LEqual (GEFC, 0x06))
                {
                    Store (SBCB (), GXFC)
                }

                Store (One, SCIS)
                Store (Zero, GEFC)
                Store (Zero, GSSE)
                Store (Zero, SCIE)
                Return (Zero)
            }

            Method (GBDA, 0, NotSerialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (0x037B, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, One))
                {
                    Store (Zero, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x04))
                {
                    Name (LOOP, Zero)
                    And (PARM, 0xFFFFFF00, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x05))
                {
                    Store (IPSC, PARM)
                    Or (PARM, ShiftLeft (IPAT, 0x08), PARM)
                    Add (PARM, 0x0100, PARM)
                    Or (PARM, ShiftLeft (LIDS, 0x10), PARM)
                    XOr (PARM, 0x00010000, PARM)
                    Or (PARM, ShiftLeft (IBIA, 0x14), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x06))
                {
                    Store (ITVF, PARM)
                    Or (PARM, ShiftLeft (ITVM, 0x04), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x07))
                {
                    Name (MEMS, 0x0D)
                    Store (GIVD, PARM)
                    XOr (PARM, One, PARM)
                    Or (PARM, ShiftLeft (GMFN, One), PARM)
                    Or (PARM, 0x1000, PARM)
                    Or (ShiftLeft (CDCT, 0x15), PARM, PARM)
                    If (LEqual (IDVM, One))
                    {
                        Store (0x11, MEMS)
                    }

                    If (LLess (TASM, M512))
                    {
                        Or (PARM, ShiftLeft (One, MEMS), PARM)
                    }
                    Else
                    {
                        If (LLess (TASM, M1GB))
                        {
                            If (LLess (IDVS, 0x03))
                            {
                                Or (PARM, ShiftLeft (IDVS, MEMS), PARM)
                            }
                            Else
                            {
                                Or (PARM, ShiftLeft (0x02, MEMS), PARM)
                            }
                        }
                        Else
                        {
                            Or (PARM, ShiftLeft (IDVS, MEMS), PARM)
                        }
                    }

                    Store (One, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0A))
                {
                    Store (Zero, PARM)
                    If (ISSC)
                    {
                        Or (0x03, PARM)
                    }

                    Store (Zero, GESF)
                    Return (SUCC)
                }

                Store (Zero, GESF)
                Return (CRIT)
            }

            Method (SBCB, 0, NotSerialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (0x20, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, One))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x03))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x04))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x05))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x06))
                {
                    ShiftRight (PARM, 0x1C, Local0)
                    If (LEqual (Local0, Zero))
                    {
                        And (PARM, 0x0F, ITVF)
                        And (PARM, 0xF0, ITVM)
                        Store (Zero, GESF)
                        Return (SUCC)
                    }

                    Store (Zero, GESF)
                    Return (NVLD)
                }

                If (LEqual (GESF, 0x07))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x08))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x09))
                {
                    Store (CRIT, GXFC)
                    Return (Zero)
                }

                If (LEqual (GESF, 0x0A))
                {
                    ShiftRight (PARM, 0x1C, Local0)
                    If (LEqual (Local0, Zero))
                    {
                        And (PARM, 0xFF, IPSC)
                        Subtract (And (ShiftRight (PARM, 0x08), 0xFF), One, IPAT)
                        And (ShiftRight (PARM, 0x12), 0x03, IBLC)
                        And (ShiftRight (PARM, 0x14), 0x07, IBIA)
                    }

                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0B))
                {
                    If (LEqual (And (ShiftRight (PARM, 0x0B), 0x03), 0x02))
                    {
                        And (ShiftRight (PARM, 0x0D), 0x0F, Local0)
                        And (ShiftRight (PARM, 0x11), 0x0F, Local1)
                        If (Local0)
                        {
                            Store (Zero, IDVM)
                            Store (Local0, IDVS)
                        }

                        If (Local1)
                        {
                            Store (One, IDVM)
                            Store (Local1, IDVS)
                        }
                    }

                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x10))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                If (LEqual (GESF, 0x11))
                {
                    Or (PARM, ShiftLeft (LIDS, 0x08), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x12))
                {
                    And (PARM, One, ISSC)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x13))
                {
                    Store (Zero, GESF)
                    Return (CRIT)
                }

                Store (Zero, GESF)
                Return (CRIT)
            }

            Scope (^^PCI0)
            {
                OperationRegion (MCHP, PCI_Config, 0x40, 0xC0)
                Field (MCHP, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x60), 
                    TASM,   10, 
                    Offset (0x62)
                }
            }

            OperationRegion (IGDP, PCI_Config, 0x40, 0xC0)
            Field (IGDP, AnyAcc, NoLock, Preserve)
            {
                Offset (0x12), 
                    ,   1, 
                GIVD,   1, 
                    ,   2, 
                GUMA,   3, 
                Offset (0x14), 
                    ,   4, 
                GMFN,   1, 
                Offset (0x18), 
                Offset (0x8C), 
                CDCT,   10, 
                Offset (0x8E), 
                Offset (0xA8), 
                GSSE,   1, 
                GSSB,   14, 
                GSES,   1, 
                Offset (0xBC), 
                ASLS,   32
            }

            Name (M512, 0x08)
            Name (M1GB, 0x10)
            Scope (\_GPE)
            {
                Method (_L06, 0, NotSerialized)
                {
                    \_SB.PCI0.GFX0.GSCI ()
                }
            }

            Name (OPBS, 0xFFFFFF00)
            Method (OPTS, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (ASLS, OPBS)
                }
            }

            Method (OWAK, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (OPBS, ASLS)
                    Store (One, GSES)
                }
            }
        }
    }

    Scope (_SB)
    {
        Scope (PCI0)
        {
            Name (CRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Address Space Granularity
                    0x0000,             // Address Range Minimum
                    0x00FF,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0x0100,             // Address Length
                    ,,)
                IO (Decode16,
                    0x0CF8,             // Address Range Minimum
                    0x0CF8,             // Address Range Maximum
                    0x01,               // Address Alignment
                    0x08,               // Address Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Address Space Granularity
                    0x0000,             // Address Range Minimum
                    0x0CF7,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0x0CF8,             // Address Length
                    ,,, TypeStatic)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Address Space Granularity
                    0x0D00,             // Address Range Minimum
                    0xFFFF,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0xF300,             // Address Length
                    ,,, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x000A0000,         // Address Range Minimum
                    0x000BFFFF,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00020000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x000C0000,         // Address Range Minimum
                    0x000DFFFF,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00020000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x00000000,         // Address Range Minimum
                    0x00000000,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00000000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
            })
            CreateDWordField (CRS, 0x5C, MIN5)
            CreateDWordField (CRS, 0x60, MAX5)
            CreateDWordField (CRS, 0x68, LEN5)
            CreateDWordField (CRS, 0x76, MIN6)
            CreateDWordField (CRS, 0x7A, MAX6)
            CreateDWordField (CRS, 0x82, LEN6)
            Method (_CRS, 0, NotSerialized)
            {
                Store (MG1L, Local0)
                If (Local0)
                {
                    Store (MG1B, MIN5)
                    Store (MG1L, LEN5)
                    Add (MIN5, Decrement (Local0), MAX5)
                }

                Store (MG2B, MIN6)
                Store (MG2L, LEN6)
                Store (MG2L, Local0)
                Add (MIN6, Decrement (Local0), MAX6)
                Return (CRS)
            }
        }
    }

    Name (WOTB, Zero)
    Name (WSSB, Zero)
    Name (WAXB, Zero)
    Method (_PTS, 1, NotSerialized)
    {
        Store (Arg0, DBG8)
        PTS (Arg0)
        Store (Zero, Index (WAKP, Zero))
        Store (Zero, Index (WAKP, One))
        If (LAnd (LEqual (Arg0, 0x04), LEqual (OSFL (), 0x02)))
        {
            Sleep (0x0BB8)
        }

        Store (ASSB, WSSB)
        Store (AOTB, WOTB)
        Store (AAXB, WAXB)
        Store (Arg0, ASSB)
        Store (OSFL (), AOTB)
        Store (Zero, AAXB)
    }

    Method (_WAK, 1, NotSerialized)
    {
        ShiftLeft (Arg0, 0x04, DBG8)
        WAK (Arg0)
        If (GNVS (0x8370)) {}
        Else
        {
            Notify (\_SB.PWRB, 0x02)
        }

        If (ASSB)
        {
            Store (WSSB, ASSB)
            Store (WOTB, AOTB)
            Store (WAXB, AAXB)
        }

        If (DerefOf (Index (WAKP, Zero)))
        {
            Store (Zero, Index (WAKP, One))
        }
        Else
        {
            Store (Arg0, Index (WAKP, One))
        }

        Return (WAKP)
    }

    OperationRegion (IORK, SystemIO, 0xB3, One)
    Field (IORK, ByteAcc, NoLock, Preserve)
    {
        IOWK,   8
    }

    Name (_S0, Package (0x04)
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    If (SS1)
    {
        Name (_S1, Package (0x04)
        {
            One, 
            Zero, 
            Zero, 
            Zero
        })
    }

    If (SS3)
    {
        Name (_S3, Package (0x04)
        {
            0x05, 
            Zero, 
            Zero, 
            Zero
        })
    }

    If (SS4)
    {
        Name (_S4, Package (0x04)
        {
            0x06, 
            Zero, 
            Zero, 
            Zero
        })
    }

    Name (_S5, Package (0x04)
    {
        0x07, 
        Zero, 
        Zero, 
        Zero
    })
    Method (PTS, 1, NotSerialized)
    {
        If (Arg0)
        {
            \_SB.PCI0.SBRG.SIOS (Arg0)
            \_SB.PCI0.NPTS (Arg0)
            \_SB.PCI0.SBRG.SPTS (Arg0)
            \_SB.PCI0.GFX0.OPTS (Arg0)
        }
    }

    Method (WAK, 1, NotSerialized)
    {
        \_SB.PCI0.SBRG.SIOW (Arg0)
        \_SB.PCI0.NWAK (Arg0)
        \_SB.PCI0.HWAK (Arg0)
        \_SB.PCI0.SBRG.SWAK (Arg0)
        \_SB.PCI0.GFX0.OWAK (Arg0)
    }
}

-------------- next part --------------
/*
  RSD PTR: OEM=ACPIAM, ACPI_Rev=2.0x (2)
	XSDT=0x3ee90100, length=36, cksum=180
 */
/*
  XSDT: Length=84, Revision=1, Checksum=230,
	OEMID=A M I, OEM Table ID=OEMXSDT, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
	Entries={ 0x3ee90290, 0x3ee90390, 0x3ee90400, 0x3ee9e040, 0x3ee99bb0, 0x3ee9e0c0 }
 */
/*
  FACP: Length=244, Revision=3, Checksum=94,
	OEMID=A M I, OEM Table ID=OEMFACP, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
 	FACS=0x3ee9e000, DSDT=0x3ee90440
	INT_MODEL=APIC
	Preferred_PM_Profile=Desktop (1)
	SCI_INT=9
	SMI_CMD=0xb2, ACPI_ENABLE=0xe1, ACPI_DISABLE=0x1e, S4BIOS_REQ=0x0
	PSTATE_CNT=0xe2
	PM1a_EVT_BLK=0x800-0x803
	PM1a_CNT_BLK=0x804-0x805
	PM_TMR_BLK=0x808-0x80b
	GPE0_BLK=0x828-0x82f
	CST_CNT=0xe3
	P_LVL2_LAT=101 us, P_LVL3_LAT=1001 us
	FLUSH_SIZE=1024, FLUSH_STRIDE=16
	DUTY_OFFSET=1, DUTY_WIDTH=0
	DAY_ALRM=13, MON_ALRM=0, CENTURY=50
	IAPC_BOOT_ARCH={LEGACY_DEV,8042}
	Flags={WBINVD,PROC_C1,SLP_BUTTON,RTC_S4}
	X_FACS=0x3ee9e000, X_DSDT=0x3ee90440
	X_PM1a_EVT_BLK=0x800:0[32] (IO)
	X_PM1a_CNT_BLK=0x804:0[16] (IO)
	X_PM_TMR_BLK=0x808:0[32] (IO)
	X_GPE0_BLK=0x828:0[64] (IO)
 */
/*
  FACS:	Length=64, HwSig=0x00000000, Firm_Wake_Vec=0x00000000
	Global_Lock=
	Flags=
	Version=1
 */
/*
  DSDT: Length=38763, Revision=1, Checksum=63,
	OEMID=A0579, OEM Table ID=A0579000, OEM Revision=0x0,
	Creator ID=INTL, Creator Revision=0x20060113
 */
/*
  APIC: Length=108, Revision=1, Checksum=33,
	OEMID=A M I, OEM Table ID=OEMAPIC, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
	Local APIC ADDR=0xfee00000
	Flags={PC-AT}

	Type=Local APIC
	ACPI CPU=1
	Flags={ENABLED}
	APIC ID=0

	Type=Local APIC
	ACPI CPU=2
	Flags={ENABLED}
	APIC ID=1

	Type=Local APIC
	ACPI CPU=3
	Flags={DISABLED}
	APIC ID=130

	Type=Local APIC
	ACPI CPU=4
	Flags={DISABLED}
	APIC ID=131

	Type=IO APIC
	APIC ID=2
	INT BASE=0
	ADDR=0x00000000fec00000

	Type=INT Override
	BUS=0
	IRQ=0
	INTR=2
	Flags={Polarity=conforming, Trigger=conforming}

	Type=INT Override
	BUS=0
	IRQ=9
	INTR=9
	Flags={Polarity=active-hi, Trigger=level}
 */
/*
  MCFG: Length=60, Revision=1, Checksum=137,
	OEMID=A M I, OEM Table ID=OEMMCFG, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97

	Base Address= 0x00000000e0000000
	Segment Group= 0x0000
	Start Bus= 0
	End Bus= 255
 */
/*
  HPET: Length=56, Revision=1, Checksum=159,
	OEMID=A M I, OEM Table ID=OEMHPET, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
	HPET Number=0
	ADDR=0x00000800
	HW Rev=0x2
	Comparitors=2
	Counter Size=1
	Legacy IRQ routing capable={TRUE}
	PCI Vendor ID=0x8086
	Minimal Tick=14318
 */
/*
  GSCI: Length=8228, Revision=1, Checksum=58,
	OEMID=A M I, OEM Table ID=GMCHSCI, OEM Revision=0x10000602,
	Creator ID=MSFT, Creator Revision=0x97
 */


More information about the freebsd-acpi mailing list