OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
Packard Bell EasyNote XS stuck at acpitimer0: on current

From: Andrew Smith (asmithtranquility.fsbusiness.co.uk)
Date: Sat Feb 09 2008 - 14:40:34 CST


Hi,

I decided to buy a Packard Bell EasyNote XS which will be available in
the US from Walmart as the Everex Cloudbook sometime soon.

The device comes preloaded with Windows XP, so needless to say I want
to get that off ASAP and something more useful onto it.

Basically the device is an implementation of the reference design of
the VIA Nanobook without the touch screen.

Using OpenBSD 4.2 release the box works absolutely fine, however, the
acpi code fails to understand some of the structures and gives up.

Under OpenBSD -current, however, the device does seem to recognise
some of the acpi entires correctly and tries to initialise some of the
devices. Unfortunately it sticks just after printing the message about
acpitimer0.

Here's the last few lines...

mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 11/02/07, BIOS32 rev. 0
0xfdd64 SMBIOS rev. 2.4 0xdc010 (47 entries)
bios0: vendor Phoenix Technologies LTD version "6.00" date 11/02/2007
bios0: PACKARD BELL BV Pegasus
acpi0 at bios0: rev 0
acpi0: tables DSDT FACP SSDT APIC MCFG
acpi: wakeup devices PCIO(S5) SP2P(S5) LAN_(S3) LID_(S3)
acpitimer0 at acpi0: 3579545 Hz, 24 bits

Once it sticks at that location you have to hold power (>3 seconds) to
get the thing to power off and whilst checking this out I have had
current and release kernels on the root of the fs. The interesting
thing is that once you boot this kernel and it sticks like this the
release kernel fails to boot and sticks at the message about the
kernel entry point once the boot loader has loaded it. For some quirky
reason if you attach a USB CD and boot from the install CD then
restart this seems to fix this issue. Very strange indeed.

I attach the acpidump output produced from a 4.2 release install and
was wondering if there is anything else that may help identify the
problem..?

Regards,

-Andy

/*
RSD PTR: Checksum=87, OEMID=PTLTD, RsdtAddress=0x3bee5663
  */
/*
RSDT: Length=52, Revision=1, Checksum=193,
        OEMID=PTLTD, OEM Table ID= RSDT, OEM Revision=0x6040000,
        Creator ID= LTP, Creator Revision=0x0
  */
/*
        Entries={ 0x3bee9a46, 0x3bee9aba, 0x3bee9f74, 0x3bee9fc4 }
  */
/*
        DSDT=0x3bee5697
        INT_MODEL=PIC
        SCI_INT=10
        SMI_CMD=0x402f, ACPI_ENABLE=0xf0, ACPI_DISABLE=0xf1, S4BIOS_REQ=0x0
        PM1a_EVT_BLK=0x4000-0x4003
        PM1a_CNT_BLK=0x4004-0x4005
        PM2_CNT_BLK=0x22-0x22
        PM2_TMR_BLK=0x4008-0x400b
        PM2_GPE0_BLK=0x4020-0x4023
        P_LVL2_LAT=80ms, P_LVL3_LAT=800ms
        FLUSH_SIZE=0, FLUSH_STRIDE=0
        DUTY_OFFSET=0, DUTY_WIDTH=4
        DAY_ALRM=125, MON_ALRM=126, CENTURY=50
        Flags={WBINVD,PROC_C1,SLP_BUTTON,RTC_S4}
  */
/*
DSDT: Length=17327, Revision=1, Checksum=55,
        OEMID=VIA, OEM Table ID=PTL_ACPI, OEM Revision=0x6040000,
        Creator ID=MSFT, Creator Revision=0x100000e
  */
DefinitionBlock (
"acpi_dsdt.aml", //Output filename
"DSDT", //Signature
0x1, //DSDT Revision
"VIA", //OEMID
"PTL_ACPI", //TABLE ID
0x6040000 //OEM Revision
)

{
Scope(\_PR_) {
     Processor(CPU0, 0, 0x4010, 0x6) {
     }
}
Scope(\) {
     Name(PICF, 0x0)
     Method(_PIC, 1) {
         Store(Arg0, PICF)
     }
}
Name(_S0_, Package(0x2) {
     0x0,
     0x0,
})
Name(_S3_, Package(0x2) {
     0x1,
     0x1,
})
Name(_S4_, Package(0x2) {
     0x2,
     0x2,
})
Name(_S5_, Package(0x2) {
     0x2,
     0x2,
})
Scope(\_SB_) {
     Name(OSTB, Ones)
     OperationRegion(OSTY, SystemMemory, 0x3beeaf4c, 0x00000001)
     Field(OSTY, AnyAcc, NoLock, Preserve) {
         TPOS, 8
     }
     Method(OSTP) {
         If(LEqual(^OSTB, Ones)) {
             If(CondRefOf(\_OSI, Local0)) {
                 If(\_OSI) {
                     "Windows 2001"
                     Store(0x8, ^OSTB)
                     Store(0x8, ^TPOS)
                 }
                 Else {
                     Store(0x0, ^OSTB)
                     Store(0x0, ^TPOS)
                 }
             }
             Else {
                 If(CondRefOf(\_OS_, Local0)) {
                     If(^SEQL(\_OS_, "Microsoft Windows")) {
                         Store(0x1, ^OSTB)
                         Store(0x1, ^TPOS)
                     }
                     Else {
                         If(^SEQL(\_OS_, "Microsoft WindowsME:
Millennium Edition")) {
                             Store(0x2, ^OSTB)
                             Store(0x2, ^TPOS)
                         }
                         Else {
                             If(^SEQL(\_OS_, "Microsoft Windows NT")) {
                                 Store(0x4, ^OSTB)
                                 Store(0x4, ^TPOS)
                             }
                             Else {
                                 Store(0x0, ^OSTB)
                                 Store(0x0, ^TPOS)
                             }
                         }
                     }
                 }
                 Else {
                     Store(0x0, ^OSTB)
                     Store(0x0, ^TPOS)
                 }
             }
         }
         Return(^OSTB)
     }
     Method(SEQL, 2, Serialized) {
         Store(SizeOf(Arg0), Local0)
         Store(SizeOf(Arg1), Local1)
         If(LNot(LEqual(Local0, Local1))) {
             Return(Zero)
         }
         Name(BUF0, Buffer(Local0) { })
         Store(Arg0, BUF0)
         Name(BUF1, Buffer(Local0) { })
         Store(Arg1, BUF1)
         Store(Zero, Local2)
         While(LLess(Local2, Local0)) {
             Store(DerefOf(Index(BUF0, Local2, )), Local3)
             Store(DerefOf(Index(BUF1, Local2, )), Local4)
             If(LNot(LEqual(Local3, Local4))) {
                 Return(Zero)
             }
             Increment(Local2)
         }
         Return(One)
     }
}
Method(\_PTS, 1) {
     Store(Arg0, \_SB_.PCI0.PIB_.Z000)
     \_SB_.PCI0.PIB_.PMWT(0xec, 0x1)
     And(\_SB_.PCI0.PIB_.PMRD(0xb5), 0xf7, Local1)
     \_SB_.PCI0.PIB_.PMWT(0xb5, Local1)
     If(LEqual(Arg0, 0x3)) {
         \_SB_.Z001(0xa0)
         And(\_SB_.PCI0.PIB_.PMRD(0xf0), 0x1, Local3)
         If(Local3) {
         }
         Else {
             And(\_SB_.PCI0.PIB_.PMRD(0xb8), 0xfe, Local1)
             \_SB_.PCI0.PIB_.PMWT(0xb8, Local1)
         }
         Or(\_SB_.PCI0.PIB_.PMRD(0xe0), 0x1, Local3)
         \_SB_.PCI0.PIB_.PMWT(0xe0, Local3)
         Store(\_SB_.PCI0.PIB_.PMRD(0xdf), Local3)
         \_SB_.PCI0.PIB_.PMWT(0xff, Local3)
         \_SB_.PCI0.PIB_.PMWT(0xdf, Zero)
     }
     If(LEqual(Arg0, 0x4)) {
         \_SB_.Z001(0xa8)
     }
     If(LEqual(Arg0, 0x5)) {
         \_SB_.Z001(0xa8)
     }
     Or(Arg0, 0x50, Local0)
     Store(Local0, \_SB_.PCI0.PIB_.Z000)
}
Method(\_WAK, 1) {
     Store(Arg0, \_SB_.PCI0.PIB_.Z000)
     \_SB_.PCI0.PIB_.PMWT(0xe6, 0xc)
     \_SB_.PCI0.PIB_.PMWT(0xec, 0x0)
     Or(\_SB_.PCI0.PIB_.PMRD(0xb5), 0x8, Local1)
     \_SB_.PCI0.PIB_.PMWT(0xb5, Local1)
     If(LEqual(Arg0, 0x3)) {
         And(\_SB_.PCI0.PIB_.PMRD(0xa8), 0xfe, Local3)
         \_SB_.PCI0.PIB_.PMWT(0xa8, Local3)
         And(\_SB_.PCI0.PIB_.PMRD(0xac), 0xef, Local3)
         \_SB_.PCI0.PIB_.PMWT(0xac, Local3)
         \_SB_.Z001(0xa9)
         \_SB_.Z001(0xa1)
         Store(\_SB_.PCI0.PIB_.PMRD(0xff), Local3)
         \_SB_.PCI0.PIB_.PMWT(0xdf, Local3)
         \_SB_.PCI0.PIB_.PMWT(0xff, Zero)
         And(\_SB_.PCI0.PIB_.PMRD(0xe0), 0xfe, Local3)
         \_SB_.PCI0.PIB_.PMWT(0xe0, Local3)
         And(\_SB_.PCI0.PIB_.PMRD(0xf0), 0x1, Local3)
         If(Local3) {
             \_SB_.PCI0.PIB_.PMWT(0xf0, 0x0)
         }
         Else {
             Or(\_SB_.PCI0.PIB_.PMRD(0xb8), 0x1, Local1)
             \_SB_.PCI0.PIB_.PMWT(0xb8, Local1)
             \_SB_.PCI0.PIB_.PMWT(0xf0, 0x0)
         }
     }
     If(LEqual(Arg0, 0x4)) {
         Notify(\_SB_.PWRB, 0x2)
     }
     Or(Arg0, 0xa0, Local0)
     Store(Local0, \_SB_.PCI0.PIB_.Z000)
}
Scope(\_GPE) {
     Mutex(GLCK, 0)
     Method(_L04) {
         \_SB_.PCI0.PIB_.PMWT(0xf2, 0xac)
         Acquire(\_GPE.GLCK, 0xffff)
         \_SB_.Z001(0xa6)
         Release(\_GPE.GLCK)
         Store(\_SB_.PCI0.PIB_.PMRD(0xf2), Local2)
         If(LEqual(Local2, 0xca)) {
             And(\_SB_.PCI0.PIB_.PMRD(0xf3), 0x23, Local2)
             If(Local2) {
                 And(Local2, 0x1, Local1)
                 Store(Local1, \_SB_.PCI0.PPB_.VGA_.CRTA)
                 And(Local2, 0x2, Local1)
                 ShiftRight(Local1, 0x1, Local1)
                 Store(Local1, \_SB_.PCI0.PPB_.VGA_.LCDA)
                 And(Local2, 0x20, Local1)
                 ShiftRight(Local1, 0x5, Local1)
                 Store(Local1, \_SB_.PCI0.PPB_.VGA_.DVIA)
                 Notify(\_SB_.PCI0.PPB_.VGA_, 0x80)
             }
             And(\_SB_.PCI0.PIB_.PMRD(0xf3), 0xdc, Local2)
             \_SB_.PCI0.PIB_.PMWT(0xf3, Local2)
         }
         \_SB_.PCI0.PIB_.PMWT(0xf2, Zero)
         While(LEqual(\_SB_.PCI0.PIB_.GPI5, 0x0)) {
             Acquire(\_GPE.GLCK, 0xffff)
             \_SB_.Z001(0xa6)
             Release(\_GPE.GLCK)
         }
     }
     Method(_L05) {
         Notify(\_SB_.PCI0, 0x2)
     }
     Method(_L08) {
         Acquire(\_GPE.GLCK, 0xffff)
         Store(\_SB_.PCI0.PIB_.PMRD(0xa8), Local0)
         Store(\_SB_.PCI0.PIB_.PMRD(0xa9), Local1)
         Store(\_SB_.PCI0.PIB_.PMRD(0xaa), Local2)
         If(And(Local0, 0x1, Local3)) {
             Store(\_SB_.PCI0.PIB_.PMRD(0xb8), Local4)
             And(Local4, 0xfe, Local4)
             \_SB_.PCI0.PIB_.PMWT(0xb8, Local4)
             If(And(\_SB_.PCI0.PIB_.PMRD(0xb5), 0x1, )) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xb7), Local7)
                 And(Local7, 0xfe, Local7)
                 \_SB_.PCI0.PIB_.PMWT(0xb7, Local7)
                 \_SB_.PCI0.PIB_.PMWT(0xf0, 0x1)
                 Store(0x1, \_SB_.LID_.LIDF)
             }
             Else {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xb7), Local7)
                 Or(Local7, 0x1, Local7)
                 \_SB_.PCI0.PIB_.PMWT(0xb7, Local7)
                 \_SB_.PCI0.PIB_.PMWT(0xf0, 0x1)
                 Store(0x0, \_SB_.LID_.LIDF)
             }
             Store(\_SB_.PCI0.PIB_.PMRD(0xa8), Local6)
             And(Local6, 0xfe, Local6)
             \_SB_.PCI0.PIB_.PMWT(0xa8, Local6)
             Or(Local4, 0x1, Local4)
             \_SB_.PCI0.PIB_.PMWT(0xb8, Local4)
             Notify(\_SB_.LID_, 0x80)
         }
         And(\_SB_.PCI0.PIB_.PMRD(0xac), 0xef, Local7)
         \_SB_.PCI0.PIB_.PMWT(0xac, Local7)
         Release(\_GPE.GLCK)
     }
     Method(_L01) {
         Acquire(\_GPE.GLCK, 0xffff)
         Store(\_SB_.PCI0.PIB_.PMRD(0xab), Local0)
         Store(\_SB_.PCI0.PIB_.PMRD(0xad), Local4)
         Store(\_SB_.PCI0.PIB_.PMRD(0xaf), Local7)
         And(Local7, 0x4, Local7)
         If(LNot(LEqual(Local7, Zero))) {
             \_SB_.PCI0.PIB_.PMMW(0x01e8, 0x0)
             Store(One, \_TZ_.THRM.TERR)
             Notify(\_TZ_.THRM, 0x80)
         }
         If(And(Local4, 0x1, Local3)) {
             Store(\_SB_.PCI0.PIB_.PMRD(0xe7), Local4)
             Store(0x1, Local2)
             Store(0x0, Local7)
             While(Local2) {
                 Store(DerefOf(Index(\_TZ_.THRM.HITP, Local7, )),
Local6)
                 If(LGreater(Local6, Local4)) {
                     If(LEqual(Local7, 0x1)) {
                         Store(0x37, \_TZ_.THRM.PSVV)
                         Notify(\_TZ_.THRM, 0x81)
                     }
                     Else {
                         Store(0x46, \_TZ_.THRM.PSVV)
                         Notify(\_TZ_.THRM, 0x81)
                     }
                     \_SB_.PCI0.PIB_.PMWT(0xe5,
DerefOf(Index(\_TZ_.THRM.LOTP, Local7, )))
                     \_SB_.PCI0.PIB_.PMWT(0xe4,
DerefOf(Index(\_TZ_.THRM.HITP, Local7, )))
                     Store(0x0, Local2)
                 }
                 Notify(\_TZ_.THRM, 0x80)
                 If(LGreater(Increment(Local7), 0x1)) {
                     Break
                 }
             }
             And(\_SB_.PCI0.PIB_.PMRD(0xad), 0xfe, Local5)
             \_SB_.PCI0.PIB_.PMWT(0xad, Local5)
             \_SB_.PCI0.PIB_.PMWT(0xf0, 0x0)
             And(\_SB_.PCI0.PIB_.PMRD(0xae), 0xfe, Local5)
             \_SB_.PCI0.PIB_.PMWT(0xae, Local5)
             \_SB_.PCI0.PIB_.PMWT(0xf0, 0x0)
             And(\_SB_.PCI0.PIB_.PMRD(0xaf), 0xf8, Local5)
             \_SB_.PCI0.PIB_.PMWT(0xaf, Local5)
             \_SB_.PCI0.PIB_.PMWT(0xf0, 0x0)
         }
         If(And(Local0, 0x1, Local3)) {
             And(\_SB_.PCI0.PIB_.PMRD(0xab), 0xfe, Local2)
             \_SB_.PCI0.PIB_.PMWT(0xab, Local2)
             \_SB_.Z001(0xa7)
             Notify(\_SB_.ACAD, 0x80)
             Notify(\_PR_.CPU0, 0x81)
         }
         If(And(Local0, 0x2, Local3)) {
             Notify(\_SB_.ACAD, 0x80)
             Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local1)
             Store(\_SB_.PCI0.PIB_.PMRD(0xf1), Local4)
             If(LNot(LEqual(And(Local1, 0x1, Local3), And(Local4, 0x1,
Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x81)
             }
             If(LNot(LEqual(And(Local1, 0x2, Local3), And(Local4, 0x2,
Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x80)
             }
             If(LNot(LEqual(And(Local1, 0x4, Local3), And(Local4, 0x4,
Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x80)
             }
             If(LNot(LEqual(And(Local1, 0x8, Local3), And(Local4, 0x8,
Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x80)
             }
             If(LNot(LEqual(And(Local1, 0x10, Local3), And(Local4,
0x10, Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x80)
             }
             If(LNot(LEqual(And(Local1, 0x20, Local3), And(Local4,
0x20, Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x80)
             }
             If(LNot(LEqual(And(Local1, 0x40, Local3), And(Local4,
0x40, Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x80)
             }
             If(LNot(LEqual(And(Local1, 0x80, Local3), And(Local4,
0x80, Local5)))) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local6)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local6)
                 Notify(\_SB_.BAT0, 0x80)
             }
             And(\_SB_.PCI0.PIB_.PMRD(0xab), 0xfd, Local2)
             \_SB_.PCI0.PIB_.PMWT(0xab, Local2)
             \_SB_.PCI0.PIB_.PMWT(0xf0, 0x0)
         }
         Release(\_GPE.GLCK)
     }
}
OperationRegion(VGAM, SystemMemory, 0x000c0002, 0x1)
Field(VGAM, ByteAcc, NoLock, Preserve) {
     VGA1, 8
}
Scope(\_SB_) {
     OperationRegion(PSIB, SystemIO, 0x0000fe00, 0x00000002)
     Field(PSIB, AnyAcc, NoLock, Preserve) {
         SMIC, 8
     }
     OperationRegion(PSCB, SystemMemory, 0x3beeaebc, 0x00000090)
     Field(PSCB, AnyAcc, NoLock, Preserve) {
         BCMD, 8,
         DID_, 32,
         INF_, 1024
     }
}
Name(FWSO, "FWSO")
Name(_PSC, 0x0)
Method(_PS0) {
     Store(_PSC, Local0)
     Store(0x0, _PSC)
     If(LEqual(Local0, 0x3)) {
         Store(0x1, \_SB_.INF_)
         While(\_SB_.INF_) {
             Store(0x20, \_SB_.BCMD)
             Store(Zero, \_SB_.SMIC)
             If(LAnd(LEqual(\_SB_.INF_, 0x1), LNot(LLess(\_SB_.OSTB,
0x4)))) {
                 Sleep(0x01f4)
             }
         }
     }
}
Method(_PS3) {
     Store(0x3, _PSC)
}
Scope(\_SB_) {
     Device(PWRB) {
         Name(_HID, 0x0c0cd041)
     }
     Device(PCI0) {
         Name(_HID, 0x030ad041)
         Name(_ADR, 0x0)
         Name(_PRW, Package(0x2) {
             0x5,
             0x5,
         })
         Name(_BBN, 0x0)
         Method(_INI) {
             \_SB_.OSTP()
         }
         Method(_S3D) {
             Return(0x2)
         }
         Device(NBF3) {
             Name(_ADR, 0x3)
             OperationRegion(NBF3, PCI_Config, 0x0, 0x0100)
             Field(NBF3, ByteAcc, NoLock, Preserve) {
                 Offset(0x82),
                 SH82, 8,
                 SH83, 8,
                 Offset(0x88),
                 EADD, 8
             }
         }
         Device(NBF5) {
             Name(_ADR, 0x5)
             Method(_STA) {
                 Return(0xb)
             }
         }
         Device(NBF7) {
             Name(_ADR, 0x7)
             OperationRegion(NBF7, PCI_Config, 0x0, 0x0100)
             Field(NBF7, ByteAcc, NoLock, Preserve) {
                 Offset(0x47),
                 , 2,
                 VLNK, 1
             }
         }
         Method(_STA) {
             Return(0xf)
         }
         Name(CRES, Buffer(0xf5) {0x88, 0xd, 0x0, 0x2, 0xc, 0x0, 0x0,
0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x1, 0x47, 0x1, 0xf8, 0xc,
0xf8, 0xc, 0x1, 0x8, 0x88, 0xd, 0x0, 0x1, 0xc, 0x3, 0x0, 0x0, 0x0,
0x0, 0xf7, 0xc, 0x0, 0x0, 0xf8, 0xc, 0x88, 0xd, 0x0, 0x1, 0xc, 0x3,
0x0, 0x0, 0x0, 0xd, 0xff, 0xff, 0x0, 0x0, 0x0, 0xf3, 0x87, 0x18, 0x0,
0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff,
0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x87, 0x18,
0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0xff,
0x3f, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x87,
0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xc, 0x0,
0xff, 0x7f, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0,
0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xc,
0x0, 0xff, 0xbf, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0,
0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0,
0xc, 0x0, 0xff, 0xff, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0,
0x0, 0x0, 0x87, 0x17, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x10, 0x0, 0xff, 0xff, 0xff, 0xdf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xf0, 0xdf, 0x87, 0x17, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xf0, 0xff, 0xff, 0xbf, 0xfe, 0x0, 0x0, 0x0, 0x0, 0xff,
0xff, 0xbf, 0xe, 0x79, 0x0 })
         Method(_CRS) {
             CreateDWordField(CRES, 0xc9, TCMM)
             CreateDWordField(CRES, 0xd5, TOMM)
             Multiply(\_SB_.PCI0.NBF3.EADD, 0x01000000, Local0)
             Store(Local0, TCMM)
             Subtract(0xffe80000, Local0, TOMM)
             Return(CRES)
         }
         Name(APIC, Package(0x10) {
             Package(0x4) {
                 0x0001ffff,
                 0x0,
                 0x0,
                 0x10,
             },
             Package(0x4) {
                 0x0001ffff,
                 0x1,
                 0x0,
                 0x11,
             },
             Package(0x4) {
                 0x0001ffff,
                 0x2,
                 0x0,
                 0x12,
             },
             Package(0x4) {
                 0x0001ffff,
                 0x3,
                 0x0,
                 0x13,
             },
             Package(0x4) {
                 0x000fffff,
                 0x0,
                 0x0,
                 0x14,
             },
             Package(0x4) {
                 0x000fffff,
                 0x1,
                 0x0,
                 0x15,
             },
             Package(0x4) {
                 0x000fffff,
                 0x2,
                 0x0,
                 0x16,
             },
             Package(0x4) {
                 0x000fffff,
                 0x3,
                 0x0,
                 0x17,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x0,
                 0x0,
                 0x14,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x1,
                 0x0,
                 0x16,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x2,
                 0x0,
                 0x15,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x3,
                 0x0,
                 0x17,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x0,
                 \_SB_.PCI0.PIB_.ALKA,
                 0x0,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x1,
                 \_SB_.PCI0.PIB_.ALKB,
                 0x0,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x2,
                 0x0,
                 0x16,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x3,
                 0x0,
                 0x17,
             },
         })
         Name(PICM, Package(0x14) {
             Package(0x4) {
                 0x0001ffff,
                 0x0,
                 \_SB_.PCI0.PIB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x0001ffff,
                 0x1,
                 \_SB_.PCI0.PIB_.LNKB,
                 0x0,
             },
             Package(0x4) {
                 0x0001ffff,
                 0x2,
                 \_SB_.PCI0.PIB_.LNKC,
                 0x0,
             },
             Package(0x4) {
                 0x0001ffff,
                 0x3,
                 \_SB_.PCI0.PIB_.LNKD,
                 0x0,
             },
             Package(0x4) {
                 0x000fffff,
                 0x0,
                 \_SB_.PCI0.PIB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x000fffff,
                 0x1,
                 \_SB_.PCI0.PIB_.LNKB,
                 0x0,
             },
             Package(0x4) {
                 0x000fffff,
                 0x2,
                 \_SB_.PCI0.PIB_.LNKC,
                 0x0,
             },
             Package(0x4) {
                 0x000fffff,
                 0x3,
                 \_SB_.PCI0.PIB_.LNKD,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x0,
                 \_SB_.PCI0.PIB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x1,
                 \_SB_.PCI0.PIB_.LNKB,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x2,
                 \_SB_.PCI0.PIB_.LNKC,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x3,
                 \_SB_.PCI0.PIB_.LNKD,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x0,
                 \_SB_.PCI0.PIB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x1,
                 \_SB_.PCI0.PIB_.LNKB,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x2,
                 \_SB_.PCI0.PIB_.LNKC,
                 0x0,
             },
             Package(0x4) {
                 0x0010ffff,
                 0x3,
                 \_SB_.PCI0.PIB_.LNKD,
                 0x0,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x0,
                 \_SB_.PCI0.PIB_.LNKC,
                 0x0,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x1,
                 \_SB_.PCI0.PIB_.LNKD,
                 0x0,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x2,
                 \_SB_.PCI0.PIB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x0011ffff,
                 0x3,
                 \_SB_.PCI0.PIB_.LNKB,
                 0x0,
             },
         })
         Method(_PRT) {
             If(PICF) {
                 Return(APIC)
             }
             Else {
                 Return(PICM)
             }
         }
         Device(PIB_) {
             Name(_ADR, 0x00110000)
             OperationRegion(IRQR, PCI_Config, 0x0, 0x0100)
             Field(IRQR, ByteAcc, NoLock, Preserve) {
                 Offset(0x44),
                 PIRE, 4,
                 PIRF, 4,
                 PIRG, 4,
                 PIRH, 4,
                 Offset(0x50),
                 ESB4, 1,
                 ESB5, 1,
                 ESB3, 1,
                 Z002, 1,
                 ESB1, 1,
                 ESB2, 1,
                 AC97, 1,
                 MC97, 1,
                 , 2,
                 PS2E, 1,
                 ERTC, 1,
                 ELAN, 1,
                 ELAK, 1,
                 Offset(0x55),
                 , 4,
                 PIRA, 4,
                 PIRB, 4,
                 PIRC, 4,
                 , 4,
                 PIRD, 4,
                 Offset(0x5b),
                 , 1,
                 EINT, 1,
                 Offset(0x68),
                 , 7,
                 HPTE, 1,
                 , 4,
                 MMTB, 4,
                 Offset(0x88),
                 PMBS, 16,
                 Offset(0x94),
                 , 4,
                 GPSU, 1,
                 SUSC, 1,
                 STRP, 1,
                 Offset(0x95),
                 USBW, 1,
                 Offset(0xd0),
                 SMBS, 16,
                 SMBC, 1
             }
             OperationRegion(PMIO, SystemIO, 0x4000, 0x50)
             Field(PMIO, ByteAcc, NoLock, Preserve) {
                 Offset(0x22),
                 , 5,
                 Z003, 1,
                 Offset(0x24),
                 , 5,
                 Z004, 1,
                 Offset(0x2a),
                 PACT, 1,
                 Offset(0x2f),
                 Z005, 8,
                 , 5,
                 CMAS, 1,
                 CMBS, 1,
                 Offset(0x31),
                 Offset(0x34),
                 , 5,
                 CMAE, 1,
                 CMBE, 1,
                 Offset(0x48),
                 , 5,
                 GPI5, 1
             }
             OperationRegion(Z006, SystemIO, 0x80, 0x1)
             Field(Z006, ByteAcc, NoLock, Preserve) {
                 Z000, 8
             }
             Device(ALKA) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x5)
                 Name(_PRS, Buffer(0x27) {0x89, 0x22, 0x0, 0xd, 0x8,
0x10, 0x0, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, 0x13,
0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x16, 0x0,
0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x79, 0x0 })
                 Method(_STA) {
                     And(PIRA, 0xf0, Local0)
                     If(LEqual(Local0, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_DIS) {
                     And(PIRA, 0xf, PIRA)
                 }
                 Method(_CRS) {
                     Name(BUFA, Buffer(0xb) {0x89, 0x6, 0x0, 0xd, 0x1,
0x0, 0x0, 0x0, 0x0, 0x79, 0x0 })
                     CreateWordField(BUFA, 0x5, IRAI)
                     Store(\_SB_.PCI0.PIB_.PIRA, IRAI)
                     Return(BUFA)
                 }
                 Method(_SRS, 1) {
                 }
             }
             Device(ALKB) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x6)
                 Name(_PRS, Buffer(0x27) {0x89, 0x22, 0x0, 0xd, 0x8,
0x10, 0x0, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, 0x13,
0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x16, 0x0,
0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x79, 0x0 })
                 Method(_STA) {
                     And(PIRB, 0xf0, Local0)
                     If(LEqual(Local0, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_DIS) {
                     And(PIRB, 0xf, PIRB)
                 }
                 Method(_CRS) {
                     Name(BUFB, Buffer(0xb) {0x89, 0x6, 0x0, 0xd, 0x1,
0x0, 0x0, 0x0, 0x0, 0x79, 0x0 })
                     CreateWordField(BUFB, 0x5, IRBI)
                     Store(\_SB_.PCI0.PIB_.PIRB, IRBI)
                     Return(BUFB)
                 }
                 Method(_SRS, 1) {
                 }
             }
             Device(ALKC) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x7)
                 Name(_PRS, Buffer(0xb) {0x89, 0x6, 0x0, 0xd, 0x1,
0x16, 0x0, 0x0, 0x0, 0x79, 0x0 })
                 Method(_STA) {
                     And(PIRC, 0xf0, Local0)
                     If(LEqual(Local0, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_DIS) {
                     And(PIRC, 0xf, PIRC)
                 }
                 Method(_CRS) {
                     Name(BUFC, Buffer(0xb) {0x89, 0x6, 0x0, 0xd, 0x1,
0x0, 0x0, 0x0, 0x0, 0x79, 0x0 })
                     CreateWordField(BUFC, 0x5, IRCI)
                     Store(\_SB_.PCI0.PIB_.PIRC, IRCI)
                     Return(BUFC)
                 }
                 Method(_SRS, 1) {
                 }
             }
             Device(ALKD) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x8)
                 Name(_PRS, Buffer(0xb) {0x89, 0x6, 0x0, 0xd, 0x1,
0x15, 0x0, 0x0, 0x0, 0x79, 0x0 })
                 Method(_STA) {
                     And(PIRD, 0xf0, Local0)
                     If(LEqual(Local0, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_DIS) {
                     And(PIRD, 0xf, PIRD)
                 }
                 Method(_CRS) {
                     Name(BUFD, Buffer(0xb) {0x89, 0x6, 0x0, 0xd, 0x1,
0x0, 0x0, 0x0, 0x0, 0x79, 0x0 })
                     CreateWordField(BUFD, 0x5, IRDI)
                     Store(\_SB_.PCI0.PIB_.PIRD, IRDI)
                     Return(BUFD)
                 }
                 Method(_SRS, 1) {
                 }
             }
             Device(LNKA) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x1)
                 Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x1e, 0x18, 0x79,
0x0 })
                 Method(_DIS) {
                     Store(Zero, \_SB_.PCI0.PIB_.PIRA)
                 }
                 Method(_STA) {
                     If(LEqual(\_SB_.PCI0.PIB_.PIRA, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_CRS) {
                     Name(BUFA, Buffer(0x6) {0x23, 0x0, 0x0, 0x18,
0x79, 0x0 })
                     CreateByteField(BUFA, 0x1, IRA1)
                     CreateByteField(BUFA, 0x2, IRA2)
                     Store(\_SB_.PCI0.PIB_.PIRA, Local0)
                     If(LGreater(Local0, 0x0)) {
                         If(LGreater(Local0, 0x7)) {
                             Subtract(Local0, 0x8, Local0)
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local0, IRA2)
                         }
                         Else {
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local0, IRA1)
                         }
                     }
                     Return(BUFA)
                 }
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x1, IRA1)
                     CreateByteField(Arg0, 0x2, IRA2)
                     If(LGreater(IRA2, Zero)) {
                         FindSetLeftBit(IRA2, Local0)
                         Decrement(Local0)
                         Add(Local0, 0x8, Local0)
                     }
                     Else {
                         FindSetLeftBit(IRA1, Local0)
                         Decrement(Local0)
                     }
                     Store(Local0, \_SB_.PCI0.PIB_.PIRA)
                 }
             }
             Device(LNKB) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x2)
                 Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x1e, 0x18, 0x79,
0x0 })
                 Method(_DIS) {
                     Store(Zero, \_SB_.PCI0.PIB_.PIRB)
                 }
                 Method(_STA) {
                     If(LEqual(\_SB_.PCI0.PIB_.PIRB, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_CRS) {
                     Name(BUFB, Buffer(0x6) {0x23, 0x0, 0x0, 0x18,
0x79, 0x0 })
                     CreateByteField(BUFB, 0x1, IRB1)
                     CreateByteField(BUFB, 0x2, IRB2)
                     Store(\_SB_.PCI0.PIB_.PIRB, Local0)
                     If(LGreater(Local0, 0x0)) {
                         If(LGreater(Local0, 0x7)) {
                             Subtract(Local0, 0x8, Local0)
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local0, IRB2)
                         }
                         Else {
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local0, IRB1)
                         }
                     }
                     Return(BUFB)
                 }
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x1, IRB1)
                     CreateByteField(Arg0, 0x2, IRB2)
                     If(LGreater(IRB2, Zero)) {
                         FindSetLeftBit(IRB2, Local0)
                         Decrement(Local0)
                         Add(Local0, 0x8, Local0)
                     }
                     Else {
                         FindSetLeftBit(IRB1, Local0)
                         Decrement(Local0)
                     }
                     Store(Local0, \_SB_.PCI0.PIB_.PIRB)
                 }
             }
             Device(LNKC) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x3)
                 Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x1e, 0x18, 0x79,
0x0 })
                 Method(_DIS) {
                     Store(Zero, \_SB_.PCI0.PIB_.PIRC)
                 }
                 Method(_STA) {
                     If(LEqual(\_SB_.PCI0.PIB_.PIRC, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_CRS) {
                     Name(BUFC, Buffer(0x6) {0x23, 0x0, 0x0, 0x18,
0x79, 0x0 })
                     CreateByteField(BUFC, 0x1, IRC1)
                     CreateByteField(BUFC, 0x2, IRC2)
                     Store(\_SB_.PCI0.PIB_.PIRC, Local0)
                     If(LGreater(Local0, 0x0)) {
                         If(LGreater(Local0, 0x7)) {
                             Subtract(Local0, 0x8, Local0)
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local0, IRC2)
                         }
                         Else {
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local0, IRC1)
                         }
                     }
                     Return(BUFC)
                 }
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x1, IRC1)
                     CreateByteField(Arg0, 0x2, IRC2)
                     If(LGreater(IRC2, Zero)) {
                         FindSetLeftBit(IRC2, Local0)
                         Decrement(Local0)
                         Add(Local0, 0x8, Local0)
                     }
                     Else {
                         FindSetLeftBit(IRC1, Local0)
                         Decrement(Local0)
                     }
                     Store(Local0, \_SB_.PCI0.PIB_.PIRC)
                 }
             }
             Device(LNKD) {
                 Name(_HID, 0x0f0cd041)
                 Name(_UID, 0x4)
                 Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x1e, 0x18, 0x79,
0x0 })
                 Method(_DIS) {
                     Store(Zero, \_SB_.PCI0.PIB_.PIRD)
                 }
                 Method(_STA) {
                     If(LEqual(\_SB_.PCI0.PIB_.PIRD, 0x0)) {
                         Return(0x9)
                     }
                     Else {
                         Return(0xb)
                     }
                 }
                 Method(_CRS) {
                     Name(BUFD, Buffer(0x6) {0x23, 0x0, 0x0, 0x18,
0x79, 0x0 })
                     CreateByteField(BUFD, 0x1, IRD1)
                     CreateByteField(BUFD, 0x2, IRD2)
                     Store(\_SB_.PCI0.PIB_.PIRD, Local0)
                     If(LGreater(Local0, 0x0)) {
                         If(LGreater(Local0, 0x7)) {
                             Subtract(Local0, 0x8, Local2)
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local2, Local3)
                             Store(Local3, IRD2)
                         }
                         Else {
                             Store(0x1, Local1)
                             ShiftLeft(Local1, Local0, Local2)
                             Store(Local2, IRD1)
                         }
                     }
                     Return(BUFD)
                 }
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x1, IRD1)
                     CreateByteField(Arg0, 0x2, IRD2)
                     If(LGreater(IRD2, Zero)) {
                         FindSetLeftBit(IRD2, Local0)
                         Decrement(Local0)
                         Add(Local0, 0x8, Local0)
                     }
                     Else {
                         FindSetLeftBit(IRD1, Local0)
                         Decrement(Local0)
                     }
                     Store(Local0, \_SB_.PCI0.PIB_.PIRD)
                 }
             }
             Device(DMA1) {
                 Name(_HID, 0x0002d041)
                 Name(_CRS, Buffer(0x1d) {0x2a, 0x10, 0x4, 0x47, 0x1,
0x0, 0x0, 0x0, 0x0, 0x1, 0x10, 0x47, 0x1, 0x81, 0x0, 0x81, 0x0, 0x1,
0xf, 0x47, 0x1, 0xc0, 0x0, 0xc0, 0x0, 0x1, 0x20, 0x79, 0x0 })
                 Method(_STA) {
                     Return(0xf)
                 }
             }
             Device(PIC_) {
                 Name(_HID, 0xd041)
                 Method(_STA) {
                     Return(0xf)
                 }
                 Name(_CRS, Buffer(0x15) {0x47, 0x1, 0x20, 0x0, 0x20,
0x0, 0x1, 0x2, 0x47, 0x1, 0xa0, 0x0, 0xa0, 0x0, 0x1, 0x2, 0x22, 0x4,
0x0, 0x79, 0x0 })
             }
             Device(COPR) {
                 Name(_HID, 0x040cd041)
                 Method(_STA) {
                     Return(0xf)
                 }
                 Name(_CRS, Buffer(0xd) {0x47, 0x1, 0xf0, 0x0, 0xf0,
0x0, 0x1, 0x10, 0x22, 0x0, 0x20, 0x79, 0x0 })
             }
             Device(TIME) {
                 Name(_HID, 0x0001d041)
                 Name(BUF0, Buffer(0xa) {0x47, 0x1, 0x40, 0x0, 0x40,
0x0, 0x1, 0x4, 0x79, 0x0 })
                 Name(BUF1, Buffer(0xd) {0x47, 0x1, 0x40, 0x0, 0x40,
0x0, 0x1, 0x4, 0x22, 0x1, 0x0, 0x79, 0x0 })
                 Method(_CRS, 0, Serialized) {
                     If(And(HPTE, 0x1, )) {
                         Return(BUF0)
                     }
                     Return(BUF1)
                 }
             }
             Device(RTC_) {
                 Name(_HID, 0x000bd041)
                 Name(BUF0, Buffer(0xa) {0x47, 0x1, 0x70, 0x0, 0x70,
0x0, 0x1, 0x6, 0x79, 0x0 })
                 Name(BUF1, Buffer(0xd) {0x47, 0x1, 0x70, 0x0, 0x70,
0x0, 0x1, 0x6, 0x22, 0x0, 0x1, 0x79, 0x0 })
                 Method(_CRS, 0, Serialized) {
                     If(And(HPTE, 0x1, )) {
                         Return(BUF0)
                     }
                     Return(BUF1)
                 }
             }
             Device(SPKR) {
                 Method(_STA) {
                     Return(0xf)
                 }
                 Name(_HID, 0x0008d041)
                 Name(_CRS, Buffer(0xa) {0x47, 0x1, 0x61, 0x0, 0x61,
0x0, 0x1, 0x1, 0x79, 0x0 })
             }
             Device(MEM_) {
                 Name(_HID, 0x010cd041)
                 Method(_STA) {
                     Return(0xf)
                 }
                 Method(_CRS) {
                     Name(SMEM, Buffer(0x56) {0x86, 0x9, 0x0, 0x1,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0,
0xe, 0x0, 0x0, 0x0, 0x2, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xf0,
0xff, 0x0, 0x0, 0x10, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xee, 0xff,
0x0, 0x0, 0x2, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xfe, 0x0,
0x0, 0x1, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xfe, 0x0, 0x0,
0x1, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, 0x80, 0x20, 0xe0, 0x0, 0x10, 0x0,
0x0, 0x79, 0x0 })
                     Return(SMEM)
                 }
             }
             Device(SYSR) {
                 Name(_HID, 0x020cd041)
                 Method(_STA) {
                     Return(0xf)
                 }
                 Method(_CRS) {
                     If(\_SB_.PCI0.PIB_.SMBC) {
                         Name(RSR2, Buffer(0x6a) {0x47, 0x1, 0x80,
0x0, 0x80, 0x0, 0x1, 0x1, 0x47, 0x1, 0x92, 0x0, 0x92, 0x0, 0x1, 0x1,
0x47, 0x1, 0xa8, 0x0, 0xa8, 0x0, 0x1, 0x1, 0x47, 0x1, 0xa9, 0x0, 0xa9,
0x0, 0x1, 0x1, 0x47, 0x1, 0x22, 0x0, 0x22, 0x0, 0x1, 0x1, 0x47, 0x1,
0x2e, 0x0, 0x2e, 0x0, 0x1, 0x1, 0x47, 0x1, 0x2f, 0x0, 0x2f, 0x0, 0x1,
0x1, 0x47, 0x1, 0x68, 0x0, 0x68, 0x0, 0x1, 0x8, 0x47, 0x1, 0xd0, 0x4,
0xd0, 0x4, 0x1, 0x2, 0x47, 0x1, 0x10, 0xfe, 0x10, 0xfe, 0x1, 0x2,
0x47, 0x1, 0x0, 0xfe, 0x0, 0xfe, 0x1, 0x1, 0x47, 0x1, 0x0, 0x80, 0x0,
0x80, 0x1, 0x80, 0x47, 0x1, 0x0, 0x81, 0x0, 0x81, 0x1, 0x20, 0x79,
0x0 })
                         CreateWordField(RSR2, 0x5a, PMMI)
                         CreateWordField(RSR2, 0x5c, PMMA)
                         CreateWordField(RSR2, 0x62, SMMI)
                         CreateWordField(RSR2, 0x64, SMMA)
                         And(\_SB_.PCI0.PIB_.PMBS, 0xfffe, PMMI)
                         Store(PMMI, PMMA)
                         And(\_SB_.PCI0.PIB_.SMBS, 0xfff0, SMMI)
                         Store(SMMI, SMMA)
                         Return(RSR2)
                     }
                     Else {
                         Name(RSR1, Buffer(0x52) {0x47, 0x1, 0x80,
0x0, 0x80, 0x0, 0x1, 0x1, 0x47, 0x1, 0x92, 0x0, 0x92, 0x0, 0x1, 0x1,
0x47, 0x1, 0xa8, 0x0, 0xa8, 0x0, 0x1, 0x1, 0x47, 0x1, 0xa9, 0x0, 0xa9,
0x0, 0x1, 0x1, 0x47, 0x1, 0x2e, 0x0, 0x2e, 0x0, 0x1, 0x1, 0x47, 0x1,
0x2f, 0x0, 0x2f, 0x0, 0x1, 0x1, 0x47, 0x1, 0xd0, 0x4, 0xd0, 0x4, 0x1,
0x2, 0x47, 0x1, 0x10, 0xfe, 0x10, 0xfe, 0x1, 0x2, 0x47, 0x1, 0x0,
0xfe, 0x0, 0xfe, 0x1, 0x1, 0x47, 0x1, 0x0, 0x80, 0x0, 0x80, 0x1, 0x80,
0x79, 0x0 })
                         CreateWordField(RSR1, 0x4a, IOMI)
                         CreateWordField(RSR1, 0x4c, IOMA)
                         And(\_SB_.PCI0.PIB_.PMBS, 0xfffe, IOMI)
                         Store(IOMI, IOMA)
                         Return(RSR1)
                     }
                 }
             }
             Device(HPET) {
                 Name(_HID, 0x0301d041)
                 Method(_CRS, 0, Serialized) {
                     If(LNot(LGreater(MMTB, 0x4))) {
                         If(LEqual(MMTB, 0x4)) {
                             Return(BUF4)
                         }
                         If(LEqual(MMTB, 0x2)) {
                             Return(BUF2)
                         }
                         If(LEqual(MMTB, 0x1)) {
                             Return(BUF1)
                         }
                         Return(BUF0)
                     }
                 }
                 Name(BUF4, Buffer(0x14) {0x22, 0x1, 0x0, 0x22, 0x0,
0x1, 0x86, 0x9, 0x0, 0x0, 0x0, 0x40, 0xd0, 0xfe, 0x0, 0x4, 0x0, 0x0,
0x79, 0x0 })
                 Name(BUF2, Buffer(0x14) {0x22, 0x1, 0x0, 0x22, 0x0,
0x1, 0x86, 0x9, 0x0, 0x0, 0x0, 0x20, 0xd0, 0xfe, 0x0, 0x4, 0x0, 0x0,
0x79, 0x0 })
                 Name(BUF1, Buffer(0x14) {0x22, 0x1, 0x0, 0x22, 0x0,
0x1, 0x86, 0x9, 0x0, 0x0, 0x0, 0x10, 0xd0, 0xfe, 0x0, 0x4, 0x0, 0x0,
0x79, 0x0 })
                 Name(BUF0, Buffer(0x14) {0x22, 0x1, 0x0, 0x22, 0x0,
0x1, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xd0, 0xfe, 0x0, 0x4, 0x0, 0x0,
0x79, 0x0 })
                 Method(_STA) {
                     If(And(HPTE, 0x1, )) {
                         If(LNot(LLess(\_SB_.OSTP(), 0x8))) {
                             Return(0xf)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                     Return(0x0)
                 }
             }
             Device(PS2M) {
                 Name(_HID, 0x050d2e4f)
                 Name(_CID, Package(0x3) {
                     0x000d2e4f,
                     0x02002e4f,
                     0x130fd041,
                 })
                 Name(_CRS, Buffer(0x5) {0x22, 0x0, 0x10, 0x79, 0x0 })
                 Method(_STA) {
                     If(LEqual(And(\_SB_.PCI0.PIB_.PMRD(0xfb), 0x80,
Local0), 0x80)) {
                         Return(0xf)
                     }
                     Return(0x0)
                 }
             }
             Device(PS2K) {
                 Method(_HID) {
                     And(\_SB_.PCI0.PIB_.PMRD(0xfb), 0x8, Local0)
                     If(Local0) {
                         Return(0x2003d041)
                     }
                     Else {
                         Return(0x0303d041)
                     }
                 }
                 Method(_CID) {
                     And(\_SB_.PCI0.PIB_.PMRD(0xfb), 0x8, Local0)
                     If(Local0) {
                         Return(0x0303d041)
                     }
                     Else {
                         Return(0x2003d041)
                     }
                 }
                 Name(_CRS, Buffer(0x15) {0x47, 0x1, 0x60, 0x0, 0x60,
0x0, 0x1, 0x1, 0x47, 0x1, 0x64, 0x0, 0x64, 0x0, 0x1, 0x1, 0x22, 0x2,
0x0, 0x79, 0x0 })
                 Method(_STA) {
                     Return(0xf)
                 }
             }
             OperationRegion(PMIF, SystemIO, 0x68, 0x8)
             Field(PMIF, ByteAcc, NoLock, Preserve) {
                 PMUD, 8,
                 Offset(0x4),
                 PMUC, 8,
                 Offset(0x8)
             }
             Mutex(ELCK, 0)
             Method(WIBF) {
                 Store(0x0009ffff, Local6)
                 Noop
                 Noop
                 Store(PMUC, Local2)
                 And(Local2, 0x22, Local2)
                 If(And(Local2, 0x20, Local3)) {
                     Return(0x1)
                 }
                 And(Local2, 0x2, Local2)
                 While(LAnd(LNot(LEqual(Local2, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                     Noop
                     Noop
                     Store(PMUC, Local2)
                     Decrement(Local6)
                     If(And(Local2, 0x20, Local3)) {
                         Return(0x1)
                     }
                     And(Local2, 0x2, Local2)
                 }
                 Return(0x0)
             }
             Method(WOBF) {
                 Store(0x009fffff, Local6)
                 Noop
                 Noop
                 Store(PMUC, Local3)
                 And(Local3, 0x21, Local3)
                 If(And(Local3, 0x20, Local2)) {
                     Return(0x1)
                 }
                 While(LAnd(LEqual(Local3, 0x0), LNot(LEqual(Local6,
0x0)))) {
                     Noop
                     Noop
                     Store(PMUC, Local3)
                     And(Local3, 0x21, Local3)
                     If(And(Local3, 0x20, Local2)) {
                         Return(0x1)
                     }
                     Decrement(Local6)
                 }
                 Return(0x0)
             }
             Method(RCMD, 2) {
                 Store(Arg0, Local0)
                 Store(Arg1, Local1)
                 Store(Local0, PMUC)
                 If(WIBF()) {
                     Return(0x1)
                 }
                 Store(Local1, PMUD)
                 If(WOBF()) {
                     Return(0x1)
                 }
                 Return(0x0)
             }
             Method(WCMD, 2) {
                 Store(Arg0, Local0)
                 Store(Arg1, Local1)
                 Store(Local0, PMUC)
                 If(WIBF()) {
                     Return(0x1)
                 }
                 Store(Local1, PMUD)
                 If(WIBF()) {
                     Return(0x1)
                 }
                 Return(0x0)
             }
             Method(PMRD, 1) {
                 Acquire(ELCK, 0xffff)
                 Store(Zero, EDFG)
                 Store(0x14, RECT)
                 While(LAnd(LEqual(EDFG, 0x0), LNot(LEqual(RECT,
0x0)))) {
                     Store(Arg0, Local0)
                     Store(0x03e8, Local6)
                     Store(PMUC, Local1)
                     And(Local1, 0x13, Local1)
                     While(LAnd(LNot(LEqual(Local1, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                         Sleep(0x1)
                         Store(PMUC, Local1)
                         And(Local1, 0x13, Local1)
                         If(And(Local1, 0x1, Local2)) {
                             Store(PMUD, Local3)
                         }
                         Decrement(Local6)
                     }
                     While(RCMD(0x80, Local0)) {
                         Noop
                         Noop
                         Store(PMUC, Local5)
                         If(And(Local5, 0x1, Local2)) {
                             Store(PMUD, Local5)
                         }
                     }
                     Store(0x07d0, Local6)
                     Store(PMUC, Local1)
                     And(Local1, 0x10, Local1)
                     While(LAnd(LNot(LEqual(Local1, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                         Noop
                         Noop
                         Store(PMUC, Local1)
                         And(Local1, 0x10, Local1)
                         Decrement(Local6)
                     }
                     Store(PMUC, Local1)
                     And(Local1, 0x20, Local1)
                     If(LEqual(Local1, 0x0)) {
                         Store(One, EDFG)
                     }
                     Decrement(RECT)
                 }
                 Store(PMUD, Local4)
                 Release(ELCK)
                 Return(Local4)
             }
             Method(PMWT, 2) {
                 Acquire(ELCK, 0xffff)
                 Store(Zero, EDFG)
                 Store(0x14, RECT)
                 While(LAnd(LEqual(EDFG, 0x0), LNot(LEqual(RECT,
0x0)))) {
                     Store(Arg0, Local0)
                     Store(0x03e8, Local6)
                     Store(PMUC, Local1)
                     And(Local1, 0x13, Local1)
                     While(LAnd(LNot(LEqual(Local1, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                         Sleep(0x1)
                         Store(PMUC, Local1)
                         And(Local1, 0x13, Local1)
                         Decrement(Local6)
                     }
                     While(WCMD(0x81, Local0)) {
                         Noop
                         Noop
                         Store(PMUC, Local5)
                         If(And(Local5, 0x1, Local2)) {
                             Store(PMUD, Local5)
                         }
                     }
                     Store(Arg1, PMUD)
                     Store(0x07d0, Local6)
                     Store(PMUC, Local1)
                     And(Local1, 0x12, Local1)
                     While(LAnd(LNot(LEqual(Local1, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                         Store(0x0, ED__)
                         Noop
                         Noop
                         Store(0x0, ED__)
                         Store(PMUC, Local1)
                         And(Local1, 0x12, Local1)
                         Decrement(Local6)
                     }
                     Store(PMUC, Local1)
                     And(Local1, 0x20, Local1)
                     If(LEqual(Local1, 0x0)) {
                         Store(One, EDFG)
                     }
                     Decrement(RECT)
                 }
                 Release(ELCK)
             }
             Method(PMMW, 2) {
                 Store(Arg0, Local0)
                 Store(Arg1, Local1)
                 And(Local0, 0xff, Local2)
                 And(Local0, 0xff00, Local3)
                 ShiftRight(Local3, 0x8, Local3)
                 Add(Local2, Local3, Local4)
                 Add(Local4, 0xc1, Local4)
                 Add(Local4, Local1, Local7)
                 And(Local7, 0xff, Local7)
                 PMWR(0x043f, Local7)
                 PMWR(Local0, Local1)
             }
             Method(PMWR, 2) {
                 Acquire(ELCK, 0xffff)
                 Store(Zero, EDFG)
                 Store(0x14, RECT)
                 While(LAnd(LEqual(EDFG, 0x0), LNot(LEqual(RECT,
0x0)))) {
                     Store(0x03e8, Local6)
                     Store(PMUC, Local1)
                     And(Local1, 0x13, Local1)
                     While(LAnd(LNot(LEqual(Local1, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                         Sleep(0x1)
                         Store(PMUC, Local1)
                         And(Local1, 0x13, Local1)
                         Decrement(Local6)
                     }
                     Store(Arg0, Local0)
                     While(WCM2(0xc1, Local0)) {
                         Store(0x0, ED__)
                         Noop
                         Noop
                         Store(0x0, ED__)
                         Store(PMUC, Local5)
                         If(And(Local5, 0x1, Local2)) {
                             Store(PMUD, Local5)
                         }
                     }
                     Store(Arg1, PMUD)
                     Store(0x07d0, Local6)
                     Store(PMUC, Local1)
                     And(Local1, 0x12, Local1)
                     While(LAnd(LNot(LEqual(Local1, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                         Store(0x0, ED__)
                         Noop
                         Noop
                         Store(0x0, ED__)
                         Store(PMUC, Local1)
                         And(Local1, 0x12, Local1)
                         Decrement(Local6)
                     }
                     Store(PMUC, Local1)
                     And(Local1, 0x20, Local1)
                     If(LEqual(Local1, 0x0)) {
                         Store(One, EDFG)
                     }
                     Decrement(RECT)
                 }
                 Release(ELCK)
             }
             Method(WCM2, 2) {
                 Store(Arg0, Local0)
                 Store(Arg1, Local1)
                 Store(Arg1, Local2)
                 And(Local1, 0xff, Local1)
                 And(Local2, 0xff00, Local2)
                 ShiftRight(Local2, 0x8, Local2)
                 Store(Local0, PMUC)
                 If(WIBF()) {
                     Return(0x1)
                 }
                 Store(Local2, PMUD)
                 If(WIBF()) {
                     Return(0x1)
                 }
                 Store(Local1, PMUD)
                 If(WIBF()) {
                     Return(0x1)
                 }
                 Return(0x0)
             }
             Name(EDFG, 0x0)
             Name(RECT, 0x0)
             OperationRegion(DELY, SystemIO, 0xed, 0x1)
             Field(DELY, ByteAcc, NoLock, Preserve) {
                 ED__, 8
             }
             Method(SMST) {
                 Store(0x10, Local6)
                 Store(PMRD(0x70), Local0)
                 While(LAnd(LNot(LEqual(Local0, 0x0)),
LNot(LEqual(Local6, 0x0)))) {
                     Store(PMRD(0x70), Local0)
                     Decrement(Local6)
                 }
                 Store(0x10, Local6)
                 Store(PMRD(0x71), Local1)
                 While(LAnd(LNot(LEqual(Local1, 0x80)),
LNot(LEqual(Local6, 0x0)))) {
                     Store(PMRD(0x71), Local1)
                     Decrement(Local6)
                 }
             }
             Method(SMWT, 3) {
                 Acquire(ELCK, 0xffff)
                 Store(0x6, Local6)
                 Store(Arg0, Local0)
                 Store(Arg1, Local1)
                 Store(Arg2, Local2)
                 While(LNot(LEqual(Local6, 0x0))) {
                     PMWT(0x71, 0x0)
                     PMWT(0x72, Local0)
                     PMWT(0x73, Local1)
                     PMWT(0x74, Local2)
                     PMWT(0x70, 0x6)
                     SMST()
                     Decrement(Local6)
                 }
                 Release(ELCK)
             }
             Method(SMWD, 4) {
                 Acquire(ELCK, 0xffff)
                 Store(0x6, Local6)
                 Store(Arg0, Local0)
                 Store(Arg1, Local1)
                 Store(Arg2, Local2)
                 Store(Arg3, Local3)
                 While(LNot(LEqual(Local6, 0x0))) {
                     PMWT(0x71, 0x0)
                     PMWT(0x72, Local0)
                     PMWT(0x73, Local1)
                     PMWT(0x74, Local2)
                     PMWT(0x75, Local3)
                     PMWT(0x70, 0x8)
                     SMST()
                     Decrement(Local6)
                 }
                 Release(ELCK)
             }
         }
         Name(REGT, Package(0x15) {
             0x10,
             0x20,
             0x21,
             0x22,
             0x23,
             0x33,
             0x34,
             0x35,
             0x36,
             0x37,
             0x47,
             0x48,
             0x49,
             0x4a,
             0x4b,
             0x4c,
             0x5c,
             0x5d,
             0x5e,
             0x5f,
             0x6f,
         })
         Name(DMTT, Package(0x7) {
             0xf,
             0x14,
             0x1e,
             0x2d,
             0x3c,
             0x4b,
             0x78,
         })
         Name(PIOT, Package(0x7) {
             0x0258,
             0x017f,
             0xf0,
             0xb4,
             0x78,
             0x5a,
             0x0,
         })
         Device(IDE_) {
             Method(_ADR) {
                 Return(0x000f0000)
             }
             OperationRegion(PCI_, PCI_Config, 0x48, 0x60)
             Field(PCI_, DWordAcc, NoLock, Preserve) {
                 SDR1, 8,
                 SDR0, 8,
                 PDR1, 8,
                 PDR0, 8,
                 SDST, 4,
                 PDST, 4,
                 Offset(0x8),
                 UDMS, 16,
                 UDMP, 16
             }
             OperationRegion(Z007, SystemIO, 0x80, 0x9)
             Field(Z007, ByteAcc, NoLock, Preserve) {
                 Z000, 8,
                 Offset(0x4),
                 Z008, 8,
                 Offset(0x8),
                 Z009, 8
             }
             Name(Z00A, 0x0)
             Name(Z00B, 0x0)
             Method(_PS3) {
                 And(^UDMP, 0x10, ^Z00A)
                 And(^UDMS, 0x10, ^Z00B)
             }
             Method(_PS0) {
                 If(^Z00A) {
                     Or(^UDMP, ^Z00A, Local0)
                     Or(Local0, ShiftLeft(^Z00A, 0x8, ), ^UDMP)
                 }
                 If(^Z00B) {
                     Or(^UDMS, ^Z00B, Local0)
                     Or(Local0, ShiftLeft(^Z00B, 0x8, ), ^UDMS)
                 }
             }
             Method(GIDX, 1) {
                 If(LEqual(Arg0, 0x0)) {
                     Store(0x0, Local1)
                 }
                 Else {
                     If(LEqual(Arg0, 0xe)) {
                         Store(0x6, Local1)
                     }
                     Else {
                         Add(ShiftRight(Arg0, 0x1, ), 0x1, Local1)
                     }
                 }
                 Return(Local1)
             }
             Method(RIDX, 1) {
                 Store(0x0, Local0)
                 While(NAnd(LLess(Local0, 0x7),
LEqual(DerefOf(Index(^^DMTT, Local0, )), Arg0), )) {
                     Increment(Local0)
                 }
                 If(Local0) {
                     If(LGreater(Local0, 0x6)) {
                         Store(0xe, Local0)
                     }
                     Else {
                         Subtract(ShiftLeft(Local0, 0x1, ), 0x1, Local0)
                         If(LNot(LEqual(Local0, 0x1))) {
                             Decrement(Local0)
                         }
                     }
                 }
                 Return(Local0)
             }
             Method(GTM_, 3) {
                 Store(Buffer(0x14) { }, Local0)
                 CreateDWordField(Local0, 0x0, PIO0)
                 CreateDWordField(Local0, 0x4, DMA0)
                 CreateDWordField(Local0, 0x8, PIO1)
                 CreateDWordField(Local0, 0xc, DMA1)
                 CreateDWordField(Local0, 0x10, FLAG)
                 Store(Zero, FLAG)
                 Or(FLAG, 0x10, FLAG)
                 Add(And(Arg1, 0xf, ), ShiftRight(Arg1, 0x4, ), Local1)
                 Add(Local1, 0x2, Local1)
                 Multiply(Local1, 0x1e, PIO0)
                 Or(FLAG, 0x2, FLAG)
                 Add(And(Arg2, 0xf, ), ShiftRight(Arg2, 0x4, ), Local1)
                 Add(Local1, 0x2, Local1)
                 Multiply(Local1, 0x1e, PIO1)
                 Or(FLAG, 0x8, FLAG)
                 And(Arg0, 0xf, Local1)
                 If(And(Arg0, 0xe0, )) {
                     Or(FLAG, 0x4, FLAG)
                     Store(^GIDX(Local1), Local1)
                 }
                 Else {
                     Store(0x6, Local1)
                 }
                 Store(DerefOf(Index(^^DMTT, Local1, )), DMA1)
                 ShiftRight(And(Arg0, 0x0f00, ), 0x8, Local1)
                 If(And(Arg0, 0xe000, )) {
                     Or(FLAG, 0x1, FLAG)
                     Store(^GIDX(Local1), Local1)
                 }
                 Else {
                     Store(0x6, Local1)
                 }
                 Store(DerefOf(Index(^^DMTT, Local1, )), DMA0)
                 Return(Local0)
             }
             Method(STM_, 3) {
                 Store(Buffer(0x5) { }, Local7)
                 CreateWordField(Local7, 0x0, UDMT)
                 CreateWordField(Local7, 0x2, PIOT)
                 CreateByteField(Local7, 0x4, R4CT)
                 CreateDWordField(Arg0, 0x0, PIO0)
                 CreateDWordField(Arg0, 0x4, DMA0)
                 CreateDWordField(Arg0, 0x8, PIO1)
                 CreateDWordField(Arg0, 0xc, DMA1)
                 CreateDWordField(Arg0, 0x10, FLAG)
                 Store(FLAG, Local4)
                 Store(0x0e0e, Local1)
                 If(And(Local4, 0x1, )) {
                     And(Local1, 0xf, Local1)
                     Store(^RIDX(DMA0), Local3)
                     Or(Local3, 0xe0, Local3)
                     Or(ShiftLeft(Local3, 0x8, ), Local1, Local1)
                 }
                 If(And(Local4, 0x4, )) {
                     And(Local1, 0xff00, Local1)
                     Store(^RIDX(DMA1), Local3)
                     Or(Local3, 0xe0, Local3)
                     Or(Local3, Local1, Local1)
                 }
                 Store(Local1, UDMT)
                 Store(0xa, Local2)
                 If(And(Local4, 0x2, )) {
                     Divide(PIO0, 0x1e, , Local3)
                     Subtract(Local3, 0x3, Local3)
                     If(LLess(Local3, 0xc)) {
                         And(Local2, 0x3, Local2)
                         Or(Local2, 0x4, Local2)
                     }
                     Store(ShiftLeft(DerefOf(Index(^^REGT, Local3, )),
0x8, ), Local6)
                 }
                 Else {
                     Store(0x0, Local6)
                 }
                 If(And(Local4, 0x8, )) {
                     Divide(PIO1, 0x1e, , Local3)
                     Subtract(Local3, 0x3, Local3)
                     If(LLess(Local3, 0xc)) {
                         And(Local2, 0xc, Local2)
                         Or(Local2, 0x1, Local2)
                     }
                     Store(DerefOf(Index(^^REGT, Local3, )), Local6)
                 }
                 Else {
                     Store(And(Local6, 0xff00, ), Local6)
                 }
                 Store(Local2, R4CT)
                 Store(Local6, PIOT)
                 Return(Local7)
             }
             Method(GTF_, 3) {
                 If(Arg2) {
                     Store(Buffer(0x7) {0x3, 0x0, 0x0, 0x0, 0x0, 0xa0,
0xef }, Local7)
                 }
                 Else {
                     Store(Buffer(0x7) {0x3, 0x0, 0x0, 0x0, 0x0, 0xb0,
0xef }, Local7)
                 }
                 CreateByteField(Local7, 0x1, MODE)
                 Add(And(Arg0, 0xf, ), ShiftRight(Arg0, 0x4, ), Local1)
                 Add(Local1, 0x2, Local1)
                 Multiply(Local1, 0x1e, Local0)
                 Store(Match(^^PIOT, MLT, Local0, MTR, 0x0, 0x0),
Local1)
                 If(Local1) {
                     Decrement(Local1)
                 }
                 If(And(Arg1, 0xe0, )) {
                     Store(^GIDX(And(Arg1, 0xf, )), Local0)
                     If(LGreater(Local0, 0x6)) {
                         Store(0x0, Local0)
                     }
                     Else {
                         Subtract(0x6, Local0, Local0)
                     }
                     Or(Local0, 0x40, MODE)
                 }
                 Else {
                     Or(Local1, 0x8, MODE)
                 }
                 Concatenate(Local7, Local7, Local6)
                 Or(Local1, 0x8, MODE)
                 Concatenate(Local6, Local7, Local5)
                 Return(Local5)
             }
             Device(PRIM) {
                 Name(_ADR, 0x0)
                 Method(_GTM) {
                     Store("GTM - Primary Controller", Debug)
                     Store(^^GTM_(0xe0e0, 0x20, 0x20), Local0)
                     Return(Local0)
                 }
                 Method(_STM, 3) {
                     Store("STM - Primary Controller", Debug)
                 }
                 Device(MAST) {
                     Name(_ADR, 0x0)
                     Method(_GTF) {
                         Store("GTF - Primary Master", Debug)
                         ShiftRight(0xe0e0, 0x8, Local0)
                         Store(^^^GTF_(0x20, Local0, 0x1), Local0)
                         Return(Local0)
                     }
                 }
                 Device(SLAV) {
                     Name(_ADR, 0x1)
                     Method(_GTF) {
                         Store("GTF - Primary Slave", Debug)
                         Store(^^^GTF_(0x20, 0xe0, 0x0), Local0)
                         Return(Local0)
                     }
                 }
             }
             Device(SECN) {
                 Name(_ADR, 0x1)
                 Method(_GTM) {
                     Store("GTM - Secondary Controller", Debug)
                     Store(^^GTM_(^^UDMS, ^^SDR0, ^^SDR1), Local0)
                     Return(Local0)
                 }
                 Method(_STM, 3) {
                     Store("STM - Secondary Controller", Debug)
                     Store(^^STM_(Arg0, Arg1, Arg2), Local0)
                     CreateWordField(Local0, 0x0, DMAS)
                     CreateWordField(Local0, 0x2, PIOS)
                     CreateByteField(Local0, 0x4, ADSS)
                     Store(Or(DMAS, And(^^UDMS, 0x1010, ), ), ^^UDMS)
                     And(PIOS, 0xff, Local1)
                     If(Local1) {
                         Store(Local1, ^^SDR1)
                     }
                     ShiftRight(PIOS, 0x8, Local1)
                     If(Local1) {
                         Store(Local1, ^^SDR0)
                     }
                     Store(ADSS, ^^SDST)
                 }
                 Device(MAST) {
                     Name(_ADR, 0x0)
                     Method(_GTF) {
                         Store("GTF - Secondary Master", Debug)
                         ShiftRight(^^^UDMS, 0x8, Local0)
                         Store(^^^GTF_(^^^SDR0, Local0, 0x1), Local0)
                         Return(Local0)
                     }
                 }
                 Device(SLAV) {
                     Name(_ADR, 0x1)
                     Method(_GTF) {
                         Store("GTF - Secondary Slave", Debug)
                         Store(^^^GTF_(^^^SDR1, ^^^UDMS, 0x0), Local0)
                         Return(Local0)
                     }
                 }
             }
         }
         Device(USB1) {
             Name(_ADR, 0x00100000)
             Method(_STA) {
                 If(\_SB_.PCI0.PIB_.ESB1) {
                     Return(0x0)
                 }
                 Else {
                     Return(0xf)
                 }
             }
         }
         Device(USB2) {
             Name(_ADR, 0x00100001)
             Method(_STA) {
                 If(\_SB_.PCI0.PIB_.ESB2) {
                     Return(0x0)
                 }
                 Else {
                     Return(0xf)
                 }
             }
         }
         Device(USB3) {
             Name(_ADR, 0x00100002)
             Method(_STA) {
                 If(\_SB_.PCI0.PIB_.ESB3) {
                     Return(0x0)
                 }
                 Else {
                     Return(0xf)
                 }
             }
         }
         Device(USB5) {
             Name(_ADR, 0x00100004)
             Method(_STA) {
                 If(\_SB_.PCI0.PIB_.ESB5) {
                     Return(0x0)
                 }
                 Else {
                     Return(0xf)
                 }
             }
         }
         Device(Z00C) {
             Name(_ADR, 0x00110007)
             OperationRegion(PBVL, PCI_Config, 0xfc, 0x1)
             Field(PBVL, ByteAcc, NoLock, Preserve) {
                 , 2,
                 Z00D, 1,
                 Offset(0x1)
             }
         }
         Device(SP2P) {
             Name(_ADR, 0x00130001)
             Name(_PRW, Package(0x2) {
                 0x5,
                 0x5,
             })
             OperationRegion(PPB2, PCI_Config, 0x19, 0x1)
             Field(PPB2, ByteAcc, NoLock, Preserve) {
                 CBUS, 8
             }
             Method(_BBN) {
                 Return(CBUS)
             }
             Name(APIC, Package(0x11) {
                 Package(0x4) {
                     0x0003ffff,
                     0x0,
                     0x0,
                     0x10,
                 },
                 Package(0x4) {
                     0x0003ffff,
                     0x1,
                     0x0,
                     0x11,
                 },
                 Package(0x4) {
                     0x0003ffff,
                     0x2,
                     0x0,
                     0x12,
                 },
                 Package(0x4) {
                     0x0003ffff,
                     0x3,
                     0x0,
                     0x13,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x0,
                     0x0,
                     0x11,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x1,
                     0x0,
                     0x12,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x2,
                     0x0,
                     0x13,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x3,
                     0x0,
                     0x10,
                 },
                 Package(0x4) {
                     0x0005ffff,
                     0x0,
                     0x0,
                     0x12,
                 },
                 Package(0x4) {
                     0x0006ffff,
                     0x0,
                     0x0,
                     0x12,
                 },
                 Package(0x4) {
                     0x0006ffff,
                     0x1,
                     0x0,
                     0x13,
                 },
                 Package(0x4) {
                     0x0007ffff,
                     0x0,
                     0x0,
                     0x11,
                 },
                 Package(0x4) {
                     0x0007ffff,
                     0x1,
                     0x0,
                     0x12,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x0,
                     0x0,
                     0x10,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x1,
                     0x0,
                     0x10,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x2,
                     0x0,
                     0x10,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x3,
                     0x0,
                     0x10,
                 },
             })
             Name(PICM, Package(0x11) {
                 Package(0x4) {
                     0x0003ffff,
                     0x0,
                     \_SB_.PCI0.PIB_.LNKA,
                     0x0,
                 },
                 Package(0x4) {
                     0x0003ffff,
                     0x1,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0003ffff,
                     0x2,
                     \_SB_.PCI0.PIB_.LNKC,
                     0x0,
                 },
                 Package(0x4) {
                     0x0003ffff,
                     0x3,
                     \_SB_.PCI0.PIB_.LNKD,
                     0x0,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x0,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x1,
                     \_SB_.PCI0.PIB_.LNKC,
                     0x0,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x2,
                     \_SB_.PCI0.PIB_.LNKD,
                     0x0,
                 },
                 Package(0x4) {
                     0x0004ffff,
                     0x3,
                     \_SB_.PCI0.PIB_.LNKA,
                     0x0,
                 },
                 Package(0x4) {
                     0x0005ffff,
                     0x1,
                     \_SB_.PCI0.PIB_.LNKC,
                     0x0,
                 },
                 Package(0x4) {
                     0x0006ffff,
                     0x0,
                     \_SB_.PCI0.PIB_.LNKC,
                     0x0,
                 },
                 Package(0x4) {
                     0x0006ffff,
                     0x1,
                     \_SB_.PCI0.PIB_.LNKD,
                     0x0,
                 },
                 Package(0x4) {
                     0x0007ffff,
                     0x0,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0007ffff,
                     0x1,
                     \_SB_.PCI0.PIB_.LNKC,
                     0x0,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x0,
                     \_SB_.PCI0.PIB_.LNKA,
                     0x0,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x1,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x2,
                     \_SB_.PCI0.PIB_.LNKC,
                     0x0,
                 },
                 Package(0x4) {
                     0x0009ffff,
                     0x3,
                     \_SB_.PCI0.PIB_.LNKD,
                     0x0,
                 },
             })
             Method(_PRT) {
                 If(PICF) {
                     Return(APIC)
                 }
                 Else {
                     Return(PICM)
                 }
             }
         }
         Device(P2PE) {
             Name(_ADR, 0x00130000)
             Method(_STA) {
                 If(LEqual(\_SB_.PCI0.Z00C.Z00D, 0x0)) {
                     Return(0xf)
                 }
                 Else {
                     Return(0x0)
                 }
             }
             Name(APIC, Package(0x4) {
                 Package(0x4) {
                     0x0001ffff,
                     0x0,
                     0x0,
                     0x11,
                 },
                 Package(0x4) {
                     0x0001ffff,
                     0x1,
                     0x0,
                     0x11,
                 },
                 Package(0x4) {
                     0x0001ffff,
                     0x2,
                     0x0,
                     0x11,
                 },
                 Package(0x4) {
                     0x0001ffff,
                     0x3,
                     0x0,
                     0x11,
                 },
             })
             Name(PICM, Package(0x4) {
                 Package(0x4) {
                     0x0001ffff,
                     0x0,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0001ffff,
                     0x1,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0001ffff,
                     0x2,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0001ffff,
                     0x3,
                     \_SB_.PCI0.PIB_.LNKB,
                     0x0,
                 },
             })
             Method(_PRT) {
                 If(PICF) {
                     Return(APIC)
                 }
                 Else {
                     Return(PICM)
                 }
             }
             Device(HDAC) {
                 Name(_ADR, 0x00010000)
                 OperationRegion(AZAR, PCI_Config, 0x0, 0x0100)
                 Field(AZAR, ByteAcc, NoLock, Preserve) {
                     VID_, 16,
                     Offset(0x4),
                     CMDR, 3
                 }
                 Method(_STA) {
                     If(LNot(LEqual(\_SB_.PCI0.P2PE.HDAC.VID_,
0x1106))) {
                         Return(0x0)
                     }
                     Else {
                         If(LEqual(\_SB_.PCI0.P2PE.HDAC.CMDR, 0x0)) {
                             Return(0xd)
                         }
                         Else {
                             Return(0xf)
                         }
                     }
                 }
             }
         }
         Device(PPB_) {
             Name(_ADR, 0x00010000)
             Device(VGA_) {
                 Name(_ADR, 0x0)
                 Name(DSEN, 0x1)
                 Name(LCDA, 0x1)
                 Name(DVIA, 0x1)
                 Name(CRTA, 0x1)
                 Method(_DOS, 1) {
                     Store(And(Arg0, 0x3, ), DSEN)
                 }
                 Method(_DOD) {
                     Return(Package(0x3) {
                         0x00010100,
                         0x00010110,
                         0x00010120,
                     })
                 }
                 Device(CRT_) {
                     Name(_ADR, 0x0100)
                     Method(_DCS) {
                         If(CRTA) {
                             Return(0x1f)
                         }
                         Else {
                             Return(0x1d)
                         }
                     }
                     Method(_DGS) {
                         If(CRTA) {
                             Return(0x1)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                     Method(_DSS, 1) {
                         If(CRTA) {
                             Return(0x80000001)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                 }
                 Device(LCD_) {
                     Name(_ADR, 0x0110)
                     Method(_DCS) {
                         If(LCDA) {
                             Return(0x1f)
                         }
                         Else {
                             Return(0x1d)
                         }
                     }
                     Method(_DGS) {
                         If(LCDA) {
                             Return(0x1)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                     Method(_DSS, 1) {
                         If(LCDA) {
                             Return(0x80000001)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                 }
                 Device(DVI_) {
                     Name(_ADR, 0x0120)
                     Method(_DCS) {
                         If(DVIA) {
                             Return(0x1f)
                         }
                         Else {
                             Return(0x1d)
                         }
                     }
                     Method(_DGS) {
                         If(DVIA) {
                             Return(0x1)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                     Method(_DSS, 1) {
                         If(DVIA) {
                             Return(0x80000001)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                 }
             }
         }
         Device(LAN_) {
             Name(_ADR, 0x00090000)
             Name(_PRW, Package(0x2) {
                 0x5,
                 0x3,
             })
         }
     }
     Mutex(VSMX, 0)
     Method(Z001, 1, Serialized) {
         Acquire(VSMX, 0xffff)
         Store(Arg0, \_SB_.PCI0.PIB_.Z005)
         Release(VSMX)
     }
     Device(LID_) {
         Name(_HID, 0x0d0cd041)
         Name(LIDF, 0x1)
         Method(_LID) {
             Return(LIDF)
         }
         Name(_PRW, Package(0x2) {
             0x8,
             0x3,
         })
     }
     Mutex(PSMX, 0)
     Device(ACAD) {
         Name(_HID, "ACPI0003")
         Name(_PCL, Package(0x1) {
             \_SB_,
         })
         Name(INIT, 0x1)
         Name(ACFG, 0x0)
         Method(_PSR) {
             Acquire(PSMX, 0xffff)
             And(0x1, \_SB_.PCI0.PIB_.PMRD(0xa0), Local0)
             Store(Local0, ACFG)
             Store(Local0, INIT)
             Release(PSMX)
             Return(ACFG)
         }
         Method(_STA) {
             Return(0xf)
         }
     }
     Device(BAT0) {
         Name(_HID, 0x0a0cd041)
         Name(_UID, 0x1)
         Method(_STA) {
             Acquire(PSMX, 0xffff)
             And(\_SB_.PCI0.PIB_.PMRD(0xa1), 0x1, Local0)
             Store(Local0, FSTA)
             Release(PSMX)
             If(LEqual(Local0, 0x0)) {
                 Return(0xf)
             }
             Else {
                 Return(0x1f)
             }
         }
         Method(_BIF) {
             And(\_SB_.PCI0.PIB_.PMRD(0xa1), 0x1, Local0)
             If(Local0) {
                 UPBI()
             }
             Else {
                 IVBI()
                 IVBS()
             }
             Store(Zero, FBIF)
             Return(PBIF)
         }
         Method(_BST) {
             UPBS()
             And(\_SB_.PCI0.PIB_.PMRD(0xa0), 0x1, Local0)
             If(Local0) {
                 And(\_SB_.PCI0.PIB_.PMRD(0xe0), 0xfe, Local0)
                 \_SB_.PCI0.PIB_.PMWT(0xe0, Local0)
             }
             Else {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local0)
                 And(Local0, 0x10, Local1)
                 If(Local1) {
                     Or(\_SB_.PCI0.PIB_.PMRD(0xe0), 0x1, Local0)
                     \_SB_.PCI0.PIB_.PMWT(0xe0, Local0)
                 }
                 Else {
                     And(\_SB_.PCI0.PIB_.PMRD(0xe0), 0xfe, Local0)
                     \_SB_.PCI0.PIB_.PMWT(0xe0, Local0)
                 }
             }
             Return(PBST)
         }
         Method(IVBI) {
             Store(0xffffffff, Index(PBIF, 0x1, ))
             Store(0xffffffff, Index(PBIF, 0x2, ))
             Store(0xffffffff, Index(PBIF, 0x4, ))
             Store("Bad", Index(PBIF, 0x9, ))
             Store("Bad", Index(PBIF, 0xa, ))
             Store("Bad", Index(PBIF, 0xb, ))
             Store("Bad", Index(PBIF, 0xc, ))
             Store(One, FBIF)
         }
         Method(IVBS) {
             Store(Zero, Index(PBST, 0x0, ))
             Store(0xffffffff, Index(PBST, 0x1, ))
             Store(0xffffffff, Index(PBST, 0x2, ))
             Store(0xffffffff, Index(PBST, 0x3, ))
             Store(One, \_SB_.BAT0.FSTA)
         }
         Method(UPBI) {
             Acquire(PSMX, 0xffff)
             Store(\_SB_.PCI0.PIB_.PMRD(0x0), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x1), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local0, Local2, Local3)
             Store(Local3, Index(PBIF, 0x0, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x2), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x3), Local1)
             Store(\_SB_.PCI0.PIB_.PMRD(0x49), Local2)
             Multiply(Local1, 0x0100, Local3)
             Multiply(Local2, 0x00010000, Local4)
             Or(Local3, Local0, Local5)
             Or(Local4, Local5, Local6)
             Store(Local6, Index(PBIF, 0x1, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x4), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x5), Local1)
             Store(\_SB_.PCI0.PIB_.PMRD(0x4a), Local2)
             Multiply(Local1, 0x0100, Local3)
             Multiply(Local2, 0x00010000, Local4)
             Or(Local3, Local0, Local5)
             Or(Local4, Local5, Local6)
             Store(Local6, Index(PBIF, 0x2, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x6), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x7), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBIF, 0x3, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x8), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x9), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBIF, 0x4, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0xa), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0xb), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBIF, 0x5, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0xc), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0xd), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBIF, 0x6, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0xe), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0xf), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBIF, 0x7, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x10), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x11), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBIF, 0x8, ))
             Store("46EA0/ECZJG", Index(PBIF, 0x9, ))
             Store("", Index(PBIF, 0xa, ))
             Store("Lion", Index(PBIF, 0xb, ))
             Store("FIC ", Index(PBIF, 0xc, ))
             Release(PSMX)
             Return(PBIF)
         }
         Method(UPBS) {
             Acquire(PSMX, 0xffff)
             Store(\_SB_.PCI0.PIB_.PMRD(0x1a), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x1b), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBST, 0x0, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x1c), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x1d), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBST, 0x1, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x1e), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x1f), Local1)
             Store(\_SB_.PCI0.PIB_.PMRD(0x4b), Local2)
             Multiply(Local1, 0x0100, Local3)
             Multiply(Local2, 0x00010000, Local4)
             Or(Local3, Local0, Local5)
             Or(Local4, Local5, Local6)
             Store(Local6, Index(PBST, 0x2, ))
             Store(\_SB_.PCI0.PIB_.PMRD(0x20), Local0)
             Store(\_SB_.PCI0.PIB_.PMRD(0x21), Local1)
             Multiply(Local1, 0x0100, Local2)
             Or(Local2, Local0, Local3)
             Store(Local3, Index(PBST, 0x3, ))
             Release(PSMX)
             Return(PBST)
         }
         Method(_BTP, 1) {
             Acquire(PSMX, 0xffff)
             Store(\_SB_.PCI0.PIB_.PMRD(0xb2), Local0)
             And(Local0, 0x7f, Local0)
             \_SB_.PCI0.PIB_.PMWT(0xb2, Local0)
             Store(Arg0, Local0)
             Store(Local0, Local6)
             And(Local0, 0xff, Local1)
             \_SB_.PCI0.PIB_.PMWT(0x22, Local1)
             Store(Local6, Local0)
             And(Local0, 0xff00, Local1)
             ShiftRight(Local1, 0x8, Local2)
             \_SB_.PCI0.PIB_.PMWT(0x23, Local2)
             Store(Local6, Local0)
             And(Local0, 0x00ff0000, Local1)
             ShiftRight(Local1, 0x10, Local2)
             \_SB_.PCI0.PIB_.PMWT(0x4c, Local2)
             Store(\_SB_.PCI0.PIB_.PMRD(0xf1), Local3)
             If(And(Local3, 0x80, Local3)) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xa1), Local4)
                 \_SB_.PCI0.PIB_.PMWT(0xf1, Local4)
             }
             Store(\_SB_.PCI0.PIB_.PMRD(0xb2), Local0)
             Or(Local0, 0x80, Local0)
             \_SB_.PCI0.PIB_.PMWT(0xb2, Local0)
             Release(PSMX)
         }
         Name(_PCL, Package(0x1) {
             \_SB_,
         })
         Name(FBIF, 0x1)
         Name(FSTA, 0x1)
         Name(GGFG, 0x0)
         Name(PBIF, Package(0xd) {
             0x1,
             0x78,
             0x64,
             0x1,
             0x2580,
             0x5,
             0x5,
             0x1,
             0x1,
             "???",
             "???",
             "???",
             "???",
         })
         Name(PBST, Package(0x4) {
             0x1,
             0x78,
             0x64,
             0x2580,
         })
         Name(PSTA, 0x1f)
     }
     Scope(_TZ_) {
         Name(FL1_, 0x0)
         Name(FL2_, 0x0)
         PowerResource(PFN0, 0, 0) {
             Method(_ON_) {
                 Store(Zero, FL2_)
                 Store(One, FL1_)
             }
             Method(_OFF) {
                 Store(Zero, FL1_)
                 Store(One, FL2_)
             }
             Method(_STA) {
                 Or(FL1_, FL2_, Local7)
                 Return(Local7)
             }
         }
         PowerResource(PFN1, 0, 0) {
             Method(_ON_) {
                 If(LEqual(FL1_, 0x0)) {
                     Store(Zero, FL1_)
                     Store(One, FL2_)
                 }
             }
             Method(_OFF) {
                 Store(Zero, \_TZ_.FL1_)
                 Store(Zero, \_TZ_.FL2_)
             }
             Method(_STA) {
                 Or(FL1_, FL2_, Local7)
                 Return(Local7)
             }
         }
         Device(FAN0) {
             Name(_HID, 0x0b0cd041)
             Name(_UID, 0x1)
             Name(_PSC, 0x0)
             Name(_PR0, Package(0x1) {
                 PFN0,
             })
         }
         Device(FAN1) {
             Name(_HID, 0x0b0cd041)
             Name(_UID, 0x2)
             Name(_PSC, 0x0)
             Method(_INI) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xaf), Local0)
                 And(Local0, 0x4, Local0)
                 If(LNot(LEqual(Local0, Zero))) {
                     \_SB_.PCI0.PIB_.PMMW(0x01e8, 0x0)
                     Store(One, \_TZ_.THRM.TERR)
                 }
             }
             Name(_PR0, Package(0x1) {
                 PFN1,
             })
         }
         ThermalZone(THRM) {
             Name(PSVV, 0x4f)
             Name(CRTV, 0x5f)
             Name(HITP, Package(0x2) {
                 0x46,
                 0x5f,
             })
             Name(LOTP, Package(0x2) {
                 0x0,
                 0x3e,
             })
             Name(AC0H, 0x5f)
             Name(AC1H, 0x46)
             Name(TERR, 0x0)
             Method(_AC0, 0, Serialized) {
                 Add(AC0H, 0x0111, Local0)
                 Multiply(Local0, 0xa, Local0)
                 Return(Local0)
             }
             Method(_AC1, 0, Serialized) {
                 Add(AC1H, 0x0111, Local0)
                 Multiply(Local0, 0xa, Local0)
                 Return(Local0)
             }
             Name(_AL0, Package(0x1) {
                 FAN0,
             })
             Name(_AL1, Package(0x1) {
                 FAN1,
             })
             Method(_PSV) {
                 Add(PSVV, 0x0111, Local0)
                 Multiply(Local0, 0xa, Local0)
                 Return(Local0)
             }
             Name(_PSL, Package(0x1) {
                 \_PR_.CPU0,
             })
             Method(_CRT) {
                 Add(CRTV, 0x0111, Local0)
                 Multiply(Local0, 0xa, Local0)
                 Return(Local0)
             }
             Method(_SCP, 1) {
             }
             Method(_TMP) {
                 Store(\_SB_.PCI0.PIB_.PMRD(0xe7), Local0)
                 Multiply(Local0, 0xa, Local0)
                 Add(Local0, 0x0aaa, Local0)
                 Return(Local0)
             }
             Name(_TC1, 0x3)
             Name(_TC2, 0x1)
             Name(_TSP, 0x96)
         }
     }
}

}
/*
SSDT: Length=1210, Revision=1, Checksum=121,
        OEMID=PPmmRe, OEM Table ID=PPm, OEM Revision=0x6040000,
        Creator ID=INTL, Creator Revision=0x20030224
  */
/*
APIC: Length=80, Revision=1, Checksum=91,
        OEMID=PTLTD, OEM Table ID= APIC, OEM Revision=0x6040000,
        Creator ID= LTP, Creator Revision=0x0
  */
/*
MCFG: Length=60, Revision=1, Checksum=97,
        OEMID=PTLTD, OEM Table ID= MCFG, OEM Revision=0x6040000,
        Creator ID= LTP, Creator Revision=0x0
  */