Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Sep 2001 14:10:01 -0700 (PDT)
From:      Poul-Henning Kamp <phk@critter.freebsd.dk>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/30617: [PATCH] ACPI bug: don't dereference a pointer you have set to NULL 
Message-ID:  <200109162110.f8GLA1O21066@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/30617; it has been noted by GNATS.

From: Poul-Henning Kamp <phk@critter.freebsd.dk>
To: FreeBSD-gnats-submit@FreeBSD.ORG
Cc:  
Subject: Re: kern/30617: [PATCH] ACPI bug: don't dereference a pointer you have set to NULL 
Date: Sun, 16 Sep 2001 23:02:34 +0200

 Here is an acpidump from the machine btw...
 
 RSD PTR: Checksum=196, OEMID=ASUS, RsdtAddress=0x03eeb000
 RSDT: Lenth=44, Revision=1, Checksum=203,
 	OEMID=ASUS, OEM Table ID=M1000A, OEM Revision=0x30303031,
 	Creator ID=MSFT, Creator Revision=0x31313031
 	Entries={ 0x03eeb080, 0x03eeb040 }
 	DSDT=0x3eeb100
 	INT_MODEL=PIC
 	SCI_INT=9
 	SMI_CMD=0xb2, ACPI_ENABLE=0xa1, ACPI_DISABLE=0xa0, S4BIOS_REQ=0xa2
 	PM1a_EVT_BLK=0xe400-0xe403
 	PM1a_CNT_BLK=0xe404-0xe405
 	PM2_CNT_BLK=0xe420-0xe420
 	PM2_TMR_BLK=0xe408-0xe40b
 	PM2_GPE0_BLK=0xe428-0xe42b
 	PM2_GPE1_BLK=0xe42c-0xe42f, GPE1_BASE=16
 	P_LVL2_LAT=100ms, P_LVL3_LAT=1000ms
 	FLUSH_SIZE=0, FLUSH_STRIDE=0
 	DUTY_OFFSET=1, DUTY_WIDTH=3
 	DAY_ALRM=13, MON_ALRM=0, CENTURY=0
 	Flags={WBINVD,PROC_C1,SLP_BUTTON,RTC_S4}
 DSDT: Lenth=15276, Revision=1, Checksum=243,
 	OEMID=ASUS, OEM Table ID=M1000A, OEM Revision=0x1000,
 	Creator ID=INTL, Creator Revision=0x2002015
 Scope(\_PR_) {
     Processor(\_PR_.CPU0, 1, 0xe410, 0x5) {
         Name(_PSS, Package(0x2) {
             Package(0x6) {
                 CPMA,
                 0x5208,
                 0xfa,
                 0xc8,
                 0x70,
                 0x0,
             },
             Package(0x6) {
                 CPMI,
                 0x3a98,
                 0xfa,
                 0xc8,
                 0x71,
                 0x1,
             },
         })
         Name(_PCT, Package(0x2) {
             Buffer(0x11) {0x82, 0xc, 0x0, 0x1, 0x8, 0x0, 0x0, 0xb2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79, 0x0 },
             Buffer(0x11) {0x82, 0xc, 0x0, 0x1, 0x8, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79, 0x0 },
         })
         Method(_PPC) {
             If(\_SB_.AC__._PSR) {
                 Return(0x0)
             }
             Else {
                 Return(0x1)
             }
         }
     }
 }
 OperationRegion(FSEG, SystemMemory, 0x000fdf00, 0x0100)
 Field(FSEG, AnyAcc, NoLock, Preserve) {
     ACPR,	32,
     MMSZ,	16,
     NPS2,	8,
     STRF,	8,
     HCUD,	8,
     HCPI,	8,
     HDUD,	8,
     HDPI,	8,
     HEUD,	8,
     HEPI,	8,
     HFUD,	8,
     HFPI,	8,
     LPTM,	8,
     CM2M,	8,
     IRMD,	8,
     FLG0,	8,
     Offset(0xf0),
     CPMA,	16,
     CPMI,	16
 }
 OperationRegion(NVSR, SystemMemory, ACPR, 0x0100)
 Field(NVSR, AnyAcc, NoLock, Preserve) {
     TRTY,	8,
     SLPT,	8,
     Offset(0x3),
     KPSW,	8,
     MPSW,	8
 }
 OperationRegion(GPSC, SystemIO, 0xb2, 0x1)
 Field(GPSC, ByteAcc, NoLock, Preserve) {
     SMCM,	8
 }
 Method(ISMI, 1, Serialized) {
     Store(Arg0, TRTY)
     Store(0xa7, SMCM)
 }
 OperationRegion(\DEBG, SystemIO, 0x81, 0x1)
 Field(\DEBG, ByteAcc, NoLock, Preserve) {
     DBG1,	8
 }
 Method(DIAG, 1) {
     Store(Arg0, DBG1)
 }
 Method(SSLP, 1) {
     Store(Arg0, SLPT)
 }
 OperationRegion(SM00, SystemIO, 0xe800, 0x7)
 Field(SM00, ByteAcc, NoLock, Preserve) {
     HSTS,	8,
     Offset(0x2),
     CTLR,	8,
     CMDR,	8,
     ADDR,	8,
     DAT0,	8,
     DAT1,	8
 }
 Method(SWFS) {
     And(HSTS, 0x6, Local0)
     Store(0x4000, Local1)
     While(LOr(LEqual(Local0, Zero), LEqual(Local1, Zero))) {
         Stall(0x1)
         And(HSTS, 0x6, Local0)
         Decrement(Local1)
     }
     Store(0xff, HSTS)
 }
 Method(SBYT, 2) {
     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
     Store(Arg0, ADDR)
     Store(Arg1, CMDR)
     Store(0xff, HSTS)
     Store(0x44, CTLR)
     SWFS
     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
 }
 Method(WBYT, 3) {
     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
     Store(Arg0, ADDR)
     Store(Arg1, CMDR)
     Store(Arg2, DAT0)
     Store(0xff, HSTS)
     Store(0x48, CTLR)
     SWFS
     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
 }
 Method(WWRD, 4) {
     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
     Store(Arg0, ADDR)
     Store(Arg1, CMDR)
     Store(Arg2, DAT0)
     Store(Arg3, DAT1)
     Store(0xff, HSTS)
     Store(0x4c, CTLR)
     SWFS
     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
 }
 Method(RBYT, 2) {
     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
     Or(Arg0, 0x1, Local1)
     Store(Local1, ADDR)
     Store(Arg1, CMDR)
     Store(0xff, HSTS)
     Store(0x48, CTLR)
     SWFS
     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
     Return(DAT0)
 }
 Method(RWRD, 2) {
     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
     Or(Arg0, 0x1, ADDR)
     Store(Arg1, CMDR)
     Store(0xff, HSTS)
     Store(0x4c, CTLR)
     SWFS
     Store(DAT0, Local0)
     ShiftLeft(DAT1, 0x8, Local1)
     Or(Local0, Local1, Local2)
     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
     Return(Local2)
 }
 Method(RTMX) {
     Store(RBYT, 0x9d)
     0x1
     Local0
     ShiftLeft(Local0, 0x1, Local1)
     ShiftLeft(Local0, 0x3, Local2)
     Add(Local1, Local2, Local0)
     Add(Local0, 0x0aac, Local0)
     Return(Local0)
 }
 Method(TINI, 1) {
     Store(Zero, GO25)
     WBYT
     0x9c
     0x9
     0x80
     WBYT
     0x9c
     0xe
     0xbf
     If(Arg0) {
         WBYT
         0x9c
         0xd
         0x46
     }
     Else {
         WBYT
         0x9c
         0xd
         0x50
     }
     WBYT
     0x9c
     0x9
     0x0
 }
 Method(CALM) {
     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
     Store(0x19, ADDR)
     Store(0x19, CMDR)
     Store(0xff, HSTS)
     Store(0x44, CTLR)
     SWFS
     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
 }
 Method(MIN_, 2) {
     If(LLess(Arg0, Arg1)) {
         Return(Arg0)
     }
     Else {
         Return(Arg1)
     }
 }
 Method(SLEN, 1) {
     Return(Sizeof(Arg0))
 }
 Method(S2BF, 1, Serialized) {
     Add(SLEN, Arg0, One)
     Local0
     Name(BUFF, Buffer(Local0) { })
     Store(Arg0, BUFF)
     Return(BUFF)
 }
 Method(SCMP, 2) {
     Store(S2BF, Arg0)
     Local0
     Store(S2BF, Arg1)
     Local1
     Store(Zero, Local4)
     Store(SLEN, Arg0)
     Local5
     Store(SLEN, Arg1)
     Local6
     Store(MIN_, Local5)
     Local6
     Local7
     While(LLess(Local4, Local7)) {
         Store(DerefOf(Index(Local0, Local4, )), Local2)
         Store(DerefOf(Index(Local1, Local4, )), Local3)
         If(LGreater(Local2, Local3)) {
             Return(One)
         }
         Else {
             If(LLess(Local2, Local3)) {
                 Return(Ones)
             }
         }
         Increment(Local4)
     }
     If(LLess(Local4, Local5)) {
         Return(One)
     }
     Else {
         If(LLess(Local4, Local6)) {
             Return(Ones)
         }
         Else {
             Return(Zero)
         }
     }
 }
 Name(\_S0_, Package(0x4) {
     0x0,
     0x0,
     0x0,
     0x0,
 })
 Name(\_S1_, Package(0x4) {
     0x1,
     0x1,
     0x0,
     0x0,
 })
 Name(\_S3_, Package(0x4) {
     0x5,
     0x5,
     0x0,
     0x0,
 })
 Name(\_S4_, Package(0x4) {
     0x6,
     0x6,
     0x0,
     0x0,
 })
 Name(\_S5_, Package(0x4) {
     0x7,
     0x7,
     0x0,
     0x0,
 })
 OperationRegion(ECOS, SystemIO, 0x72, 0x2)
 Field(ECOS, ByteAcc, NoLock, Preserve) {
     CIDX,	8,
     CDAT,	8
 }
 IndexField(CIDX, CDAT, ByteAcc, NoLock, Preserve) {
     Offset(0x37),
     BRIT,	4,
     PNOF,	1,
     Offset(0x5f),
     SUS3,	1,
     Offset(0x60)
 }
 Name(PRW1, Package(0x6) {
     Package(0x2) {
         0xb,
         0x1,
     },
     Package(0x2) {
         0x3,
         0x1,
     },
     Package(0x2) {
         0x4,
         0x1,
     },
     Package(0x2) {
         0x8,
         0x1,
     },
     Package(0x2) {
         0x1d,
         0x1,
     },
     Package(0x2) {
         0x5,
         0x1,
     },
 })
 Name(PRW3, Package(0x6) {
     Package(0x2) {
         0xb,
         0x3,
     },
     Package(0x2) {
         0x3,
         0x3,
     },
     Package(0x2) {
         0x4,
         0x3,
     },
     Package(0x2) {
         0x8,
         0x3,
     },
     Package(0x2) {
         0x1d,
         0x4,
     },
     Package(0x2) {
         0x5,
         0x3,
     },
 })
 Name(PRWT, Package(0x6) {
     0xb,
     0x3,
     0x4,
     0x8,
     0x1d,
     0x5,
 })
 Method(SPRW, 1) {
     Store(Match(PRWT, MEQ, Arg0, MTR, 0x0, 0x0), Local0)
     If(LEqual(SUS3, Zero)) {
         Return(DerefOf(Index(PRW1, Local0, )))
     }
     Else {
         Return(DerefOf(Index(PRW3, Local0, )))
     }
 }
 OperationRegion(GPOO, SystemIO, 0xec00, 0x30)
 Field(GPOO, ByteAcc, NoLock, Preserve) {
     Offset(0xc),
     ,	12,
     LIDS,	1,
     Offset(0xe),
     ,	2,
     CLRF,	1,
     Offset(0xf),
     GO24,	1,
     GO25,	1,
     GO26,	1,
     GO27,	1,
     GO28,	1,
     Offset(0x2c),
     ,	12,
     LIDP,	1
 }
 OperationRegion(GPOB, SystemIO, 0xe400, 0x42)
 Field(GPOB, ByteAcc, NoLock, Preserve) {
     Offset(0x4),
     SCIE,	1,
     Offset(0x30),
     ,	4,
     SLPE,	1,
     Offset(0x34),
     ,	4,
     SLPS,	1,
     Offset(0x41),
     IPE1,	1,
     IPE2,	1,
     ,	2,
     IPS1,	1,
     IPS2,	1
 }
 OperationRegion(GIB0, SystemIO, 0xe400, 0x30)
 Field(GIB0, ByteAcc, NoLock, Preserve) {
     Offset(0x2e),
     GI00,	1,
     GI01,	1,
     GI02,	1,
     GI03,	1,
     GI04,	1,
     GI05,	1,
     GI06,	1,
     GI07,	1,
     GI08,	1,
     GI09,	1,
     GI0A,	1,
     GI0B,	1,
     GI0C,	1,
     GI0D,	1,
     GI0E,	1,
     GI0F,	1
 }
 OperationRegion(PM3D, SystemIO, 0xe42c, 0x1)
 Field(PM3D, ByteAcc, NoLock, Preserve) {
     ,	7,
     KSCS,	1
 }
 OperationRegion(PM3F, SystemIO, 0xe42e, 0x1)
 Field(PM3F, ByteAcc, NoLock, Preserve) {
     ,	7,
     KSCE,	1
 }
 OperationRegion(ACTR, SystemIO, 0xe410, 0x1)
 Field(ACTR, ByteAcc, NoLock, Preserve) {
     ,	1,
     DUTY,	3,
     DUTE,	1
 }
 OperationRegion(CSMI, SystemIO, 0xe430, 0x1)
 Field(CSMI, ByteAcc, NoLock, Preserve) {
     SMIE,	1,
     Offset(0x1)
 }
 OperationRegion(SMIC, SystemIO, 0xfe00, 0x1)
 Field(SMIC, ByteAcc, NoLock, Preserve) {
     ESMI,	8
 }
 Name(TMAD, 0x9c)
 Name(TSAD, 0x90)
 Name(TP1H, 0x0dcc)
 Name(TP1L, 0x0c28)
 Name(TP2H, 0x0e30)
 Name(TP2L, 0x0e1c)
 Name(TPC_, 0x0e94)
 Name(PLCY, 0x0)
 Name(ACIO, 0x0)
 Name(OSFL, 0x1)
 Name(KST4, 0x0)
 Scope(\_TZ_) {
     ThermalZone(THRM) {
         Name(_GPE, 0x0)
         Name(_PSL, Package(0x1) {
             \_PR_.CPU0,
         })
         Name(_TSP, 0x012c)
         Name(_TC1, 0x1)
         Name(_TC2, 0x4)
         Method(_PSV) {
             If(\OSFL) {
                 Return(TP2L)
             }
             Else {
                 Return(TP2H)
             }
         }
         Method(_CRT) {
             Return(TPC_)
         }
         Method(_TMP) {
             Store(RTMX, Local0)
             Return(Local0)
         }
         Method(_SCP, 1) {
             If(Arg0) {
                 Store(One, PLCY)
             }
             Else {
                 Store(Zero, PLCY)
             }
             Notify(\_TZ_.THRM, 0x81)
         }
     }
 }
 Scope(\_GPE) {
     Method(_L00) {
         WBYT
         0x9c
         0x9
         0x40
         Store(RBYT, 0x9d)
         0x2
         Local1
         Store(RBYT, 0x9d)
         0x2
         Local1
         Store(RBYT, 0x9d)
         0x1
         Local0
         WBYT
         0x9c
         0x9
         0x4
         And(Local1, 0x18, Local1)
         Store(\_SB_.PCI0.PX40.EC0_.ECRD, 0x78)
         Local2
         And(Local2, 0x10, Local2)
         If(Local2) {
             Store(0x46, Local3)
         }
         Else {
             Store(0x50, Local3)
         }
         If(LEqual(Local1, 0x10)) {
             If(LNot(LLess(Local0, 0x5a))) {
                 WBYT
                 0x9c
                 0xd
                 0x7f
                 Store(0x58, Local4)
                 WBYT
                 0x9c
                 0xe
                 Local4
                 Store(One, GO25)
             }
             Else {
                 If(LNot(LLess(Local0, Local3))) {
                     WBYT
                     0x9c
                     0xd
                     0x5c
                     Subtract(Local3, 0x2, Local4)
                     WBYT
                     0x9c
                     0xe
                     Local4
                     Store(One, GO25)
                 }
             }
         }
         Else {
             If(LNot(LGreater(Local0, Local3))) {
                 Store(Zero, GO25)
                 Add(Local3, 0x2, Local4)
                 WBYT
                 0x9c
                 0xd
                 Local4
                 WBYT
                 0x9c
                 0xe
                 0xbf
             }
             Else {
                 If(LNot(LGreater(Local0, 0x5a))) {
                     Subtract(Local3, 0x2, Local4)
                     WBYT
                     0x9c
                     0xd
                     0x5c
                     WBYT
                     0x9c
                     0xe
                     Local4
                 }
             }
         }
         CALM
         Notify(\_TZ_.THRM, 0x80)
     }
     Method(_L1C) {
         Not(LIDP, Local0)
         Store(Local0, LIDP)
         Notify(\_SB_.LID_, 0x80)
     }
     Method(_L05) {
         Notify(\_SB_.PCI0.AC97, 0x2)
         Notify(\_SB_.PWRB, 0x2)
     }
     Method(_L0B) {
         Notify(\_SB_.PCI0.PCI1.LAN_, 0x2)
         Notify(\_SB_.PWRB, 0x2)
     }
     Method(_L18) {
     }
 }
 Method(\_PTS, 1) {
     Store(Zero, GO28)
     If(LAnd(LNot(LLess(Arg0, 0x3)), LNot(LGreater(Arg0, 0x4)))) {
         Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
         Store(0x4b, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xc5, \_SB_.PCI0.PX40.EC0_.CCMD)
         Release(\_SB_.PCI0.PX40.EC0_.MTXE)
     }
     If(LEqual(Arg0, 0x3)) {
         Store(0x1, CLRF)
         Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
         Store(0x25, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xc5, \_SB_.PCI0.PX40.EC0_.CCMD)
         Store(0x1, \_SB_.PCI0.PX40.EC0_.CDA3)
         Store(0xe9, \_SB_.PCI0.PX40.EC0_.CDA2)
         Store(0xa9, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xbb, \_SB_.PCI0.PX40.EC0_.CCMD)
         Store(0x2d, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xc5, \_SB_.PCI0.PX40.EC0_.CCMD)
         Store(0x2e, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xc5, \_SB_.PCI0.PX40.EC0_.CCMD)
         Store(0x0, \_SB_.PCI0.PX40.EC0_.CDA3)
         Store(0x7d, \_SB_.PCI0.PX40.EC0_.CDA2)
         Store(0x20, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xbb, \_SB_.PCI0.PX40.EC0_.CCMD)
         Store(0xcb, \_SB_.PCI0.PX40.EC0_.CCMD)
         Release(\_SB_.PCI0.PX40.EC0_.MTXE)
         Store(One, GO27)
     }
     Store(0xa8, SMCM)
 }
 Method(\_WAK, 1) {
     SBYT
     0x48
     0x55
     If(LEqual(Arg0, 0x1)) {
         Store(0x99, TRTY)
         Store(0x0, ESMI)
     }
     If(LNot(LLess(Arg0, 0x3))) {
         Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
         Store(0x2b, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xc5, \_SB_.PCI0.PX40.EC0_.CCMD)
         Store(0x45, \_SB_.PCI0.PX40.EC0_.CDA1)
         Store(0xc5, \_SB_.PCI0.PX40.EC0_.CCMD)
         Release(\_SB_.PCI0.PX40.EC0_.MTXE)
     }
     If(LEqual(Arg0, 0x4)) {
         Notify(\_SB_.PWRB, 0x2)
     }
 }
 Scope(\_SB_) {
     Device(AC__) {
         Name(_PCL, Package(0x1) {
             \_SB_,
         })
         Name(_HID, "ACPI0003")
         Method(_PSR) {
             Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
             Store(0x6, \_SB_.PCI0.PX40.EC0_.CDA1)
             Store(0xc3, \_SB_.PCI0.PX40.EC0_.CCMD)
             Store(\_SB_.PCI0.PX40.EC0_.CDA1, Local0)
             Release(\_SB_.PCI0.PX40.EC0_.MTXE)
             If(And(Local0, 0x10, )) {
                 Return(0x1)
             }
             Else {
                 Return(0x0)
             }
         }
     }
     Device(LID_) {
         Name(_HID, 0x0d0cd041)
         Method(_LID) {
             Return(LIDP)
         }
         Name(_PRW, Package(0x2) {
             0x1c,
             0x4,
         })
     }
     Device(HOTK) {
         Name(_HID, "ATK0100")
         Name(_UID, 0x01010100)
         Method(_STA) {
             Return(0xf)
         }
         Name(BUF_, Package(0x4) {
         })
         Method(INIT, 1) {
             Store("M1A", Local0)
             Return(Local0)
         }
         Method(BSTS) {
             Store(0x50, CIDX)
             Store(CDAT, Local0)
             And(CDAT, 0xf0, CDAT)
             And(Local0, 0xf, Local0)
             Return(Local0)
         }
         Method(MLED, 1) {
         }
         Method(TMPR) {
             Store(Zero, Local0)
             Store(RTMX, Local0)
             If(GO25) {
                 Or(Local0, 0x00ff0000, Local0)
             }
             If(DUTE) {
                 Store(DUTY, Local1)
             }
             Else {
                 Store(0x0, Local1)
             }
             ShiftLeft(Local1, 0x18, Local1)
             Or(Local1, Local0, Local0)
             Return(Local0)
         }
         Method(FLSH, 1) {
             If(LEqual(Arg0, 0x0)) {
                 Store(0x1, GO28)
                 Store(0x1, BSWE)
                 Store(0x0, SMIE)
             }
             If(LEqual(Arg0, 0x1)) {
                 Store(0x0, GO28)
                 Store(0x0, BSWE)
                 Store(0x1, SMIE)
             }
         }
         Method(SFUN) {
             Return(0x15)
         }
     }
     Device(PWRB) {
         Name(_HID, 0x0c0cd041)
         Method(_STA) {
             Return(0xb)
         }
     }
     Device(MEM1) {
         Name(_HID, 0x010cd041)
         Method(_CRS) {
             Name(BUF1, Buffer(0x4a) {0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x1, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xfb, 0xff, 0x0, 0x0, 0x5, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xb8, 0xff, 0x0, 0x0, 0x8, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xd, 0x0, 0x0, 0xc0, 0x0, 0x0, 0x79, 0x0 })
             CreateDWordField(BUF1, 0x20, EMLN)
             Store(MEMS, EMLN)
             Decrement(EMLN)
             ShiftLeft(EMLN, 0x14, EMLN)
             Return(BUF1)
         }
     }
     Method(MEMS) {
         Return(MMSZ)
     }
     Device(LNKA) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x1)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRA, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRA)
         }
         Method(_CRS) {
             Name(BUFA, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFA, 0x1, IRA_)
             And(\_SB_.PCI0.PX40.PIRA, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRA_)
             }
             Return(BUFA)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRA1)
             CreateByteField(Arg0, 0x2, IRA2)
             ShiftLeft(IRA2, 0x8, Local0)
             Or(Local0, IRA1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRA, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRA)
         }
     }
     Device(LNKB) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x2)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRB, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRB)
         }
         Method(_CRS) {
             Name(BUFB, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFB, 0x1, IRB_)
             And(\_SB_.PCI0.PX40.PIRB, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRB_)
             }
             Return(BUFB)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRB1)
             CreateByteField(Arg0, 0x2, IRB2)
             ShiftLeft(IRB2, 0x8, Local0)
             Or(Local0, IRB1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRB, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRB)
         }
     }
     Device(LNKC) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x3)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRC, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRC)
         }
         Method(_CRS) {
             Name(BUFC, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFC, 0x1, IRC_)
             And(\_SB_.PCI0.PX40.PIRC, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRC_)
             }
             Return(BUFC)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRC1)
             CreateByteField(Arg0, 0x2, IRC2)
             ShiftLeft(IRC2, 0x8, Local0)
             Or(Local0, IRC1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRC, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRC)
         }
     }
     Device(LNKD) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x4)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRD, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRD)
         }
         Method(_CRS) {
             Name(BUFD, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFD, 0x1, IRD_)
             And(\_SB_.PCI0.PX40.PIRD, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRD_)
             }
             Return(BUFD)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRD1)
             CreateByteField(Arg0, 0x2, IRD2)
             ShiftLeft(IRD2, 0x8, Local0)
             Or(Local0, IRD1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRD, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRD)
         }
     }
     Device(LNKE) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x5)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRE, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRE)
         }
         Method(_CRS) {
             Name(BUFD, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFD, 0x1, IRD_)
             And(\_SB_.PCI0.PX40.PIRE, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRD_)
             }
             Return(BUFD)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRD1)
             CreateByteField(Arg0, 0x2, IRD2)
             ShiftLeft(IRD2, 0x8, Local0)
             Or(Local0, IRD1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRE, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRE)
         }
     }
     Device(LNKF) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x6)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRF, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRF)
         }
         Method(_CRS) {
             Name(BUFD, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFD, 0x1, IRD_)
             And(\_SB_.PCI0.PX40.PIRF, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRD_)
             }
             Return(BUFD)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRD1)
             CreateByteField(Arg0, 0x2, IRD2)
             ShiftLeft(IRD2, 0x8, Local0)
             Or(Local0, IRD1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRF, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRF)
         }
     }
     Device(LNKG) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x7)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRG, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRG)
         }
         Method(_CRS) {
             Name(BUFD, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFD, 0x1, IRD_)
             And(\_SB_.PCI0.PX40.PIRG, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRD_)
             }
             Return(BUFD)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRD1)
             CreateByteField(Arg0, 0x2, IRD2)
             ShiftLeft(IRD2, 0x8, Local0)
             Or(Local0, IRD1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRG, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRG)
         }
     }
     Device(LNKH) {
         Name(_HID, 0x0f0cd041)
         Name(_UID, 0x8)
         Method(_STA) {
             And(\_SB_.PCI0.PX40.PIRH, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 Return(0xb)
             }
             Else {
                 Return(0x9)
             }
         }
         Name(_PRS, Buffer(0x6) {0x23, 0xf8, 0xde, 0x18, 0x79, 0x0 })
         Method(_DIS) {
             Store(0x80, \_SB_.PCI0.PX40.PIRH)
         }
         Method(_CRS) {
             Name(BUFD, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
             CreateWordField(BUFD, 0x1, IRD_)
             And(\_SB_.PCI0.PX40.PIRH, 0x8f, Local0)
             If(LLess(Local0, 0x80)) {
                 And(Local0, 0xf, Local0)
                 ShiftLeft(One, Local0, Local1)
                 Store(Local1, IRD_)
             }
             Return(BUFD)
         }
         Method(_SRS, 1) {
             CreateByteField(Arg0, 0x1, IRD1)
             CreateByteField(Arg0, 0x2, IRD2)
             ShiftLeft(IRD2, 0x8, Local0)
             Or(Local0, IRD1, Local0)
             Store(0x0, Local1)
             ShiftRight(Local0, 0x1, Local0)
             While(LGreater(Local0, 0x0)) {
                 Increment(Local1)
                 ShiftRight(Local0, 0x1, Local0)
             }
             And(\_SB_.PCI0.PX40.PIRH, 0x70, Local0)
             Or(Local1, Local0, \_SB_.PCI0.PX40.PIRH)
         }
     }
     Device(PCI0) {
         Name(_HID, 0x030ad041)
         Name(_ADR, 0x0)
         OperationRegion(REGS, PCI_Config, 0x40, 0xc0)
         Field(REGS, DWordAcc, NoLock, Preserve) {
             Offset(0x10),
             CDH_,	1,
             Offset(0x11),
             PAMC,	2,
             PAMD,	2,
             PAME,	2,
             Offset(0x12),
             DRP0,	4,
             DRP1,	4,
             Offset(0x14),
             DRP2,	4,
             Offset(0x18),
             ,	7,
             HEN_,	1
         }
         Method(_INI) {
             If(LEqual(SCMP, \_OS_)) {
                 "Microsoft Windows NT"
                 0x0
                 Store(0x1, OSFL)
             }
             Else {
                 Store(0x0, OSFL)
             }
         }
         Method(_CRS) {
             Name(CRES, Buffer(0x88) {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, 0x17, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x87, 0x17, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0 x0, 0x0, 0xc0, 0xd, 0x0, 0xff, 0xff, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x87, 0x17, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0xff, 0xff, 0xaf, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff, 0x79, 0x0 })
             CreateDWordField(CRES, 0x76, RAMT)
             CreateDWordField(CRES, 0x82, RAMR)
             Store(MEMS, RAMT)
             Increment(RAMT)
             ShiftLeft(RAMT, 0x14, RAMT)
             Subtract(0xffb00000, RAMT, RAMR)
             Return(CRES)
         }
         Name(PICM, Package(0x7) {
             Package(0x4) {
                 0x0002ffff,
                 0x0,
                 \_SB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x001fffff,
                 0x0,
                 \_SB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x001fffff,
                 0x1,
                 \_SB_.LNKB,
                 0x0,
             },
             Package(0x4) {
                 0x001fffff,
                 0x2,
                 \_SB_.LNKH,
                 0x0,
             },
             Package(0x4) {
                 0x001fffff,
                 0x3,
                 \_SB_.LNKD,
                 0x0,
             },
             Package(0x4) {
                 0x000effff,
                 0x0,
                 \_SB_.LNKA,
                 0x0,
             },
             Package(0x4) {
                 0x000effff,
                 0x1,
                 \_SB_.LNKB,
                 0x0,
             },
         })
         Method(_PRT) {
             Return(PICM)
         }
         Device(PCI1) {
             Name(_ADR, 0x001e0000)
             Method(_S1D) {
                 Return(0x1)
             }
             Name(PICM, Package(0x3) {
                 Package(0x4) {
                     0x0007ffff,
                     0x0,
                     \_SB_.LNKA,
                     0x0,
                 },
                 Package(0x4) {
                     0x0007ffff,
                     0x1,
                     \_SB_.LNKB,
                     0x0,
                 },
                 Package(0x4) {
                     0x0008ffff,
                     0x0,
                     \_SB_.LNKE,
                     0x0,
                 },
             })
             Method(_PRT) {
                 Return(PICM)
             }
         }
         Device(PX41) {
             Name(_ADR, 0x001f0001)
             OperationRegion(IDET, PCI_Config, 0x40, 0xc)
             Field(IDET, DWordAcc, NoLock, Preserve) {
                 PTM0,	1,
                 PIE0,	1,
                 PPE0,	1,
                 PDT0,	1,
                 PTM1,	1,
                 PIE1,	1,
                 PPE1,	1,
                 PDT1,	1,
                 PRCT,	2,
                 ,	2,
                 PISP,	2,
                 PD1E,	1,
                 PIDE,	1,
                 STM0,	1,
                 SIE0,	1,
                 SPE0,	1,
                 SDT0,	1,
                 STM1,	1,
                 SIE1,	1,
                 SPE1,	1,
                 SDT1,	1,
                 SRCT,	2,
                 ,	2,
                 SISP,	2,
                 SD1E,	1,
                 SIDE,	1,
                 PRC1,	2,
                 PIS1,	2,
                 SRC1,	2,
                 SIS1,	2,
                 Offset(0x6),
                 Offset(0x7),
                 Offset(0x8),
                 PDMA,	2,
                 SDMA,	2,
                 Offset(0x9),
                 Offset(0xa),
                 PCT0,	2,
                 ,	2,
                 PCT1,	2,
                 Offset(0xb),
                 SCT0,	2,
                 ,	2,
                 SCT1,	2,
                 Offset(0xc)
             }
             OperationRegion(IDEC, PCI_Config, 0x54, 0x1)
             Field(IDEC, DWordAcc, NoLock, Preserve) {
                 PCB0,	1,
                 PCB1,	1,
                 SCB0,	1,
                 SCB1,	1,
                 PMCC,	1,
                 PSCC,	1,
                 SMCC,	1,
                 SSCC,	1
             }
         }
         Device(PX40) {
             Name(_ADR, 0x001f0000)
             OperationRegion(BIOS, PCI_Config, 0x4e, 0x1)
             Scope(\) {
                 Field(\_SB_.PCI0.PX40.BIOS, ByteAcc, NoLock, Preserve) {
                     BSWE,	1,
                     Offset(0x1)
                 }
             }
             OperationRegion(PIRQ, PCI_Config, 0x60, 0xc)
             Field(PIRQ, ByteAcc, NoLock, Preserve) {
                 PIRA,	8,
                 PIRB,	8,
                 PIRC,	8,
                 PIRD,	8,
                 Offset(0x8),
                 PIRE,	8,
                 PIRF,	8,
                 PIRG,	8,
                 PIRH,	8
             }
             OperationRegion(LPDC, PCI_Config, 0xe0, 0x8)
             Field(LPDC, ByteAcc, NoLock, Preserve) {
                 UADR,	2,
                 ,	2,
                 UBDR,	2,
                 Offset(0x1),
                 LPDR,	2,
                 ,	2,
                 FDDR,	1,
                 Offset(0x2),
                 SBDR,	2,
                 ,	1,
                 MDDR,	1,
                 MSDR,	2,
                 Offset(0x3),
                 C0DR,	1,
                 C8DR,	1,
                 D0DR,	1,
                 D8DR,	1,
                 E0DR,	1,
                 E8DR,	1,
                 F0DR,	1,
                 F8DR,	1,
                 Offset(0x6),
                 UALE,	1,
                 UBLE,	1,
                 LPLE,	1,
                 FDLE,	1,
                 SBLE,	1,
                 MDLE,	1,
                 MSLE,	1,
                 ADLE,	1,
                 GLLE,	1,
                 GHLE,	1,
                 KBLE,	1,
                 MCLE,	1,
                 C1LE,	1,
                 C2LE,	1,
                 Offset(0x8)
             }
             Device(EC0_) {
                 Name(_HID, 0x090cd041)
                 Name(_CRS, Buffer(0x12) {0x47, 0x1, 0x62, 0x0, 0x62, 0x0, 0x0, 0x1, 0x47, 0x1, 0x66, 0x0, 0x66, 0x0, 0x0, 0x1, 0x79, 0x0 })
                 Name(ECOK, 0x0)
                 Name(_GPE, 0x17)
                 Name(BTBL, Package(0x10) {
                     0x0,
                     0x20,
                     0x24,
                     0x28,
                     0x2c,
                     0x30,
                     0x34,
                     0x38,
                     0x3c,
                     0x40,
                     0x44,
                     0x46,
                     0x48,
                     0x4a,
                     0x4b,
                     0x4c,
                 })
                 Mutex(MTXE, 4)
                 Method(_REG, 2) {
                     If(LEqual(Arg0, 0x3)) {
                         Store(Arg1, ECOK)
                     }
                 }
                 OperationRegion(RAM_, EmbeddedControl, 0x0, 0xff)
                 Field(RAM_, AnyAcc, Lock, Preserve) {
                     Offset(0x4),
                     CCMD,	8,
                     CDA1,	8,
                     CDA2,	8,
                     CDA3,	8,
                     Offset(0x48),
                     EV54,	8,
                     EV55,	8,
                     TK54,	8,
                     TK55,	8,
                     Offset(0x50),
                     EV60,	8,
                     EV61,	8,
                     EV62,	8,
                     EV63,	8,
                     EV64,	8,
                     EV65,	8,
                     EV66,	8,
                     EV67,	8,
                     TK60,	8,
                     TK61,	8,
                     TK62,	8,
                     TK63,	8,
                     TK64,	8,
                     TK65,	8,
                     TK66,	8,
                     TK67,	8,
                     Offset(0x78),
                     ST6Y,	8
                 }
                 Name(BATW, 0xa)
                 Name(BATL, 0x1)
                 Name(BUFF, Package(0xd) {
                 })
                 Name(DC_T, Package(0x10) {
                     0x1080,
                     0x0c80,
                     0x0f00,
                     0x0b00,
                     0x1600,
                     0x0,
                     0x1400,
                     0x0,
                     0x1200,
                     0x0d80,
                     0x0,
                     0x0,
                     0x1800,
                     0x0,
                     0x0,
                     0x0,
                 })
                 Name(BUF_, Package(0x4) {
                 })
                 Name(MAXC, 0x0)
                 Name(CURC, 0x0)
                 Name(BATS, 0x0)
                 Method(RBAT, 2) {
                     \_SB_.PCI0.PX40.EC0_.ECWR
                     0x6
                     Arg0
                     Store(Arg1, Local0)
                     ShiftLeft(Local0, 0x1, Local0)
                     Add(Local0, 0xda, Local1)
                     \_SB_.PCI0.PX40.EC0_.ECWR
                     0x4
                     Local1
                     Store(0x1000, Local2)
                     While(LAnd(\_SB_.PCI0.PX40.EC0_.ECRD, 0x4)) {
                         Local2
                         Decrement(Local2)
                     }
                     Store(\_SB_.PCI0.PX40.EC0_.ECRD, 0x5)
                     Arg1
                     Return(Arg1)
                 }
                 Method(WBAT, 3) {
                     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
                     Store(Arg2, \_SB_.PCI0.PX40.EC0_.CDA1)
                     Store(Or(Arg0, 0x80, ), Arg0)
                     Store(Arg0, \_SB_.PCI0.PX40.EC0_.CDA2)
                     Store(Arg1, Local0)
                     ShiftLeft(Local0, 0x1, Local0)
                     Add(Local0, 0xda, Local1)
                     Store(Local1, \_SB_.PCI0.PX40.EC0_.CCMD)
                     While(\_SB_.PCI0.PX40.EC0_.CCMD) {
                     }
                     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
                 }
                 Method(RVSR, 1) {
                     Store(RBAT, 0x12)
                     Arg0
                     Local0
                     Store(RBAT, 0x13)
                     Arg0
                     Local1
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, Local1, Local0)
                     And(Local0, 0xffff, Local0)
                     And(Local0, 0x8000, Local1)
                     If(Local1) {
                         Not(Local0, Local0)
                         And(Local0, 0xffff, Local0)
                     }
                     Store(Local0, Local1)
                     ShiftRight(Local1, 0x1, Local1)
                     ShiftLeft(Local0, 0x1, Local0)
                     Add(Local0, Local1, Local0)
                     Store(Local0, Arg0)
                     If(LLess(Arg0, 0x0320)) {
                         Store(0x0320, Arg0)
                     }
                     Return(Arg0)
                 }
                 Method(RPOL, 1) {
                     \_SB_.PCI0.PX40.EC0_.ECWR
                     0x6
                     Arg0
                     \_SB_.PCI0.PX40.EC0_.ECWR
                     0x7
                     0x3
                     \_SB_.PCI0.PX40.EC0_.ECWR
                     0x4
                     0xba
                     Store(\_SB_.PCI0.PX40.EC0_.ECRD, 0x5)
                     Arg0
                     Return(Arg0)
                 }
                 Method(RPOT, 1) {
                     \_SB_.PCI0.PX40.EC0_.ECWR
                     0x5
                     Arg0
                     \_SB_.PCI0.PX40.EC0_.ECWR
                     0x4
                     0xc3
                     Store(\_SB_.PCI0.PX40.EC0_.ECRD, 0x5)
                     Arg0
                     Return(Arg0)
                 }
                 Device(BAT0) {
                     Name(_HID, 0x0a0cd041)
                     Name(_PCL, Package(0x1) {
                         \_SB_,
                     })
                     Method(_STA) {
                         If(LEqual(ECOK, 0x1)) {
                             Store(\_SB_.PCI0.PX40.EC0_.ECRD, 0x78)
                             Local0
                             And(Local0, 0x2, Local0)
                             If(Local0) {
                                 Return(0xf)
                             }
                             Else {
                                 Return(0x1f)
                             }
                         }
                         Else {
                             Return(0xf)
                         }
                     }
                     Method(_BIF) {
                         Store(One, Index(BUFF, 0x0, ))
                         Store("BA-02", Index(BUFF, 0x9, ))
                         Store("Li-ION", Index(BUFF, 0xb, ))
                         Store(RBAT, 0x5)
                         0x0
                         Local0
                         ShiftLeft(Local0, 0x5, Local0)
                         Store(Local0, Local1)
                         Store(Local0, Index(BUFF, 0x2, ))
                         Store(Local0, Index(BUFF, 0x1, ))
                         Store(One, Index(BUFF, 0x3, ))
                         Store(0x39d0, Index(BUFF, 0x4, ))
                         Divide(Local1, 0xa, Local0, Local1)
                         Store(Local1, Index(BUFF, 0x5, ))
                         Divide(Local1, 0xa, Local0, Local1)
                         Store(Local1, Index(BUFF, 0x6, ))
                         Subtract(DerefOf(Index(BUFF, 0x5, )), DerefOf(Index(BUFF, 0x6, )), Index(BUFF, 0x7, ))
                         Subtract(DerefOf(Index(BUFF, 0x2, )), DerefOf(Index(BUFF, 0x5, )), Index(BUFF, 0x8, ))
                         Store(" ", Index(BUFF, 0xa, ))
                         Store("ASUSTek", Index(BUFF, 0xc, ))
                         Return(BUFF)
                     }
                     Method(_BST) {
                         Store(\_SB_.PCI0.PX40.EC0_.ECRD, 0x78)
                         Local0
                         And(Local0, 0x2, BATS)
                         If(BATS) {
                             Store(0xffffffff, Index(BUF_, 0x1, ))
                             Store(0xffffffff, Index(BUF_, 0x2, ))
                             Store(0xffffffff, Index(BUF_, 0x3, ))
                         }
                         Else {
                             Store(RVSR, 0x0)
                             Index(BUF_, 0x1, )
                             Store(RBAT, 0x17)
                             0x0
                             Local0
                             Store(RBAT, 0x3)
                             0x0
                             Local1
                             ShiftLeft(Local1, 0x8, Local1)
                             Add(Local0, Local1, Local1)
                             ShiftRight(Local1, 0x3, Local1)
                             Store(Local1, Index(BUF_, 0x2, ))
                             Store(Local1, CURC)
                             If(LNot(LLess(BATW, Local1))) {
                                 WBAT
                                 0x51
                                 0x0
                                 0x55
                             }
                             Store(DerefOf(Index(BUFF, 0x1, )), Local2)
                             Subtract(Local2, Local1, Local3)
                             If(LLess(Local3, 0xa)) {
                                 Store(Local2, Index(BUF_, 0x2, ))
                                 Store(Local2, CURC)
                             }
                             Store(RBAT, 0xb)
                             0x0
                             Local0
                             Multiply(Local0, 0x4b, Local0)
                             ShiftRight(Local0, 0x4, Local0)
                             Multiply(Local0, 0x9, Local0)
                             Store(Local0, Index(BUF_, 0x3, ))
                             Store(Zero, Local1)
                             If(LNot(LLess(CURC, MAXC))) {
                                 Store(RBAT, 0x1)
                                 0x0
                                 Local0
                                 If(And(Local0, 0x80, )) {
                                     Or(Local1, 0x2, Local1)
                                 }
                                 Else {
                                     Or(Local1, 0x1, Local1)
                                 }
                             }
                             Else {
                                 And(\_SB_.PCI0.PX40.EC0_.ECRD, 0x78, 0x10)
                                 Local0
                                 If(Local0) {
                                     Or(Local1, 0x2, Local1)
                                 }
                                 Else {
                                     Or(Local1, 0x1, Local1)
                                 }
                             }
                             Store(Local1, Index(BUF_, 0x0, ))
                         }
                         Return(BUF_)
                     }
                 }
                 OperationRegion(K62P, SystemIO, 0x62, 0x1)
                 Field(K62P, ByteAcc, NoLock, Preserve) {
                     EC62,	8
                 }
                 OperationRegion(K66P, SystemIO, 0x66, 0x1)
                 Field(K66P, ByteAcc, NoLock, Preserve) {
                     EC66,	8
                 }
                 Method(WEIE) {
                     Store(0x4000, Local0)
                     And(EC66, 0x2, Local1)
                     While(LAnd(LNot(LEqual(Local0, Zero)), LEqual(Local1, 0x2))) {
                         And(EC66, 0x2, Local1)
                         Decrement(Local0)
                     }
                 }
                 Method(WEOF) {
                     Store(0x4000, Local0)
                     And(EC66, 0x1, Local1)
                     While(LAnd(LNot(LEqual(Local0, Zero)), LEqual(Local1, 0x0))) {
                         And(EC66, 0x1, Local1)
                         Decrement(Local0)
                     }
                 }
                 Method(ECRD, 1) {
                     Acquire(MTXE, 0xffff)
                     Store(Zero, KSCE)
                     WEIE
                     Store(0x80, EC66)
                     WEIE
                     Store(Arg0, EC62)
                     WEOF
                     Store(EC62, Local0)
                     Store(One, KSCS)
                     Store(One, KSCE)
                     Release(MTXE)
                     Return(Local0)
                 }
                 Method(ECWR, 2) {
                     Acquire(MTXE, 0xffff)
                     Store(Zero, KSCE)
                     WEIE
                     Store(0x81, EC66)
                     WEIE
                     Store(Arg0, EC62)
                     WEIE
                     Store(Arg1, EC62)
                     WEIE
                     Store(One, KSCS)
                     Store(One, KSCE)
                     Release(MTXE)
                 }
                 Method(_Q31) {
                     Acquire(MTXE, 0xffff)
                     XOr(\_SB_.PCI0.PX40.EC0_.EV61, 0x10, \_SB_.PCI0.PX40.EC0_.EV61)
                     Release(MTXE)
                     Notify(BAT0, 0x80)
                     Notify(BAT0, 0x81)
                     Notify(BAT0, 0x1)
                     Notify(\_SB_.AC__, 0x80)
                 }
                 Method(_Q34) {
                     Store(0x3, ACIO)
                     Acquire(MTXE, 0xffff)
                     XOr(\_SB_.PCI0.PX40.EC0_.EV64, 0x10, \_SB_.PCI0.PX40.EC0_.EV64)
                     And(\_SB_.PCI0.PX40.EC0_.ST6Y, 0x10, Local0)
                     Release(MTXE)
                     Notify(\_SB_.AC__, 0x80)
                     \TINI
                     Local0
                     Notify(\_TZ_.THRM, 0x81)
                     Notify(\_TZ_.THRM, 0x80)
                     If(Local0) {
                         Notify(HOTK, 0x58)
                     }
                     Else {
                         Notify(HOTK, 0x57)
                     }
                     Notify(\_PR_.CPU0, 0x80)
                 }
                 Method(_Q0A) {
                     Notify(\_SB_.SLPB, 0x80)
                 }
                 Method(_Q11) {
                     Store(0xa0, TRTY)
                     Store(0x0, ESMI)
                     And(TRTY, 0x3, Local0)
                     Store(DerefOf(Index(\_SB_.PCI0.VID0.VSTT, Local0, )), \_SB_.PCI0.VID0.DISU)
                     Store(0xa1, TRTY)
                     Store(0x0, ESMI)
                     If(LEqual(Local0, 0x3)) {
                         Notify(HOTK, 0x35)
                     }
                     If(LEqual(Local0, 0x1)) {
                         Notify(HOTK, 0x37)
                     }
                     If(LEqual(Local0, 0x2)) {
                         Notify(HOTK, 0x36)
                     }
                 }
                 Method(_Q0E) {
                     If(LLess(BRIT, 0xf)) {
                         Increment(BRIT)
                         Store(DerefOf(Index(BTBL, BRIT, )), Local0)
                         Acquire(MTXE, 0xffff)
                         Store(Local0, \_SB_.PCI0.PX40.EC0_.CDA1)
                         Store(0xd0, \_SB_.PCI0.PX40.EC0_.CDA2)
                         Store(0xda, \_SB_.PCI0.PX40.EC0_.CCMD)
                         Release(MTXE)
                     }
                     Add(BRIT, 0x10, Local0)
                     Notify(HOTK, Local0)
                 }
                 Method(_Q0F) {
                     If(BRIT) {
                         Decrement(BRIT)
                         Store(DerefOf(Index(BTBL, BRIT, )), Local0)
                         Acquire(MTXE, 0xffff)
                         Store(Local0, \_SB_.PCI0.PX40.EC0_.CDA1)
                         Store(0xd0, \_SB_.PCI0.PX40.EC0_.CDA2)
                         Store(0xda, \_SB_.PCI0.PX40.EC0_.CCMD)
                         Release(MTXE)
                     }
                     Add(BRIT, 0x20, Local0)
                     Notify(HOTK, Local0)
                 }
                 Method(_Q10) {
                     Acquire(MTXE, 0xffff)
                     If(PNOF) {
                         Store(0x0, Local0)
                     }
                     Else {
                         Store(DerefOf(Index(BTBL, BRIT, )), Local0)
                     }
                     Store(Local0, \_SB_.PCI0.PX40.EC0_.CDA1)
                     Store(0xd0, \_SB_.PCI0.PX40.EC0_.CDA2)
                     Store(0xda, \_SB_.PCI0.PX40.EC0_.CCMD)
                     Release(MTXE)
                     XOr(PNOF, 0x1, PNOF)
                     Store(0x34, Local0)
                     Subtract(Local0, PNOF, Local0)
                     Notify(HOTK, Local0)
                 }
                 Method(_Q13) {
                     Notify(HOTK, 0x32)
                 }
                 Method(_Q14) {
                     Notify(HOTK, 0x30)
                 }
                 Method(_Q15) {
                     Notify(HOTK, 0x31)
                 }
                 Method(_Q37) {
                     Notify(HOTK, 0x53)
                 }
                 Method(_Q36) {
                     Notify(HOTK, 0x52)
                 }
                 Method(_Q35) {
                     Notify(HOTK, 0x51)
                 }
                 Method(_Q30) {
                     Notify(HOTK, 0x50)
                 }
                 Method(_Q01) {
                     Notify(HOTK, 0x52)
                 }
                 Method(_Q02) {
                     Notify(HOTK, 0x53)
                 }
                 Method(_Q03) {
                     Notify(HOTK, 0x54)
                 }
                 Method(_Q04) {
                     Notify(HOTK, 0x55)
                 }
                 Method(_Q05) {
                     Notify(HOTK, 0x56)
                 }
             }
             Device(\_SB_.SLPB) {
                 Name(_HID, 0x0e0cd041)
             }
             Device(SYS1) {
                 Name(_HID, 0x020cd041)
                 Name(_UID, 0x1)
                 Method(_CRS) {
                     Name(BUF1, Buffer(0x6a) {0x47, 0x1, 0x10, 0x0, 0x10, 0x0, 0x0, 0x10, 0x47, 0x1, 0x22, 0x0, 0x22, 0x0, 0x0, 0xc, 0x47, 0x1, 0x30, 0x0, 0x30, 0x0, 0x0, 0x10, 0x47, 0x1, 0x44, 0x0, 0x44, 0x0, 0x0, 0x1c, 0x47, 0x1, 0x67, 0x0, 0x67, 0x0, 0x0, 0x9, 0x47, 0x1, 0x74, 0x0, 0x74, 0x0, 0x0, 0xc, 0x47, 0x1, 0x91, 0x0, 0x91, 0x0, 0x0, 0x3, 0x47, 0x1, 0xa2, 0x0, 0xa2, 0x0, 0x0, 0x1e, 0x47, 0x1, 0xe0, 0x0, 0xe0, 0x0, 0x0, 0x10, 0x47, 0x1, 0xf0, 0x3, 0xf0, 0x3, 0x0, 0x2, 0x47, 0x1, 0xd0, 0x4, 0xd0, 0x4 , 0x0, 0x2, 0x47, 0x1, 0x0, 0x6, 0x0, 0x6, 0x1, 0x20, 0x47, 0x1, 0x0, 0xe8, 0x0, 0xe8, 0x1, 0x10, 0x79, 0x0 })
                     Return(BUF1)
                 }
             }
             Device(SYS2) {
                 Name(_HID, 0x020cd041)
                 Name(_UID, 0x2)
                 Method(_CRS) {
                     Name(BUF1, Buffer(0x12) {0x47, 0x1, 0x0, 0xe4, 0x0, 0xe4, 0x1, 0x80, 0x47, 0x1, 0x0, 0xec, 0x0, 0xec, 0x1, 0x40, 0x79, 0x0 })
                     Return(BUF1)
                 }
             }
             Device(SYS3) {
                 Name(_HID, 0x020cd041)
                 Name(_UID, 0x3)
                 Method(_STA) {
                     And(NPS2, 0x10, Local0)
                     And(NPS2, 0x8, Local1)
                     If(LEqual(Local1, 0x8)) {
                         If(LEqual(Local0, 0x10)) {
                             Return(0xf)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                     Else {
                         And(FLG0, 0x4, Local1)
                         If(LEqual(Local1, 0x4)) {
                             Return(0x0)
                         }
                         Else {
                             If(LEqual(Local0, 0x10)) {
                                 Return(0xf)
                             }
                             Else {
                                 Return(0x0)
                             }
                         }
                     }
                 }
                 Method(_CRS) {
                     Name(BUF1, Buffer(0x6) {0x23, 0x0, 0x10, 0x1, 0x79, 0x0 })
                     Return(BUF1)
                 }
             }
             Device(PIC_) {
                 Name(_HID, 0xd041)
                 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(DMA1) {
                 Name(_HID, 0x0002d041)
                 Name(_CRS, Buffer(0x25) {0x2a, 0x10, 0x4, 0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x10, 0x47, 0x1, 0x80, 0x0, 0x80, 0x0, 0x1, 0x11, 0x47, 0x1, 0x94, 0x0, 0x94, 0x0, 0x1, 0xc, 0x47, 0x1, 0xc0, 0x0, 0xc0, 0x0, 0x1, 0x20, 0x79, 0x0 })
             }
             Device(TMR_) {
                 Name(_HID, 0x0001d041)
                 Name(_CRS, Buffer(0xd) {0x47, 0x1, 0x40, 0x0, 0x40, 0x0, 0x1, 0x4, 0x22, 0x1, 0x0, 0x79, 0x0 })
             }
             Device(RTC_) {
                 Name(_HID, 0x000bd041)
                 Name(_CRS, Buffer(0xd) {0x47, 0x1, 0x70, 0x0, 0x70, 0x0, 0x1, 0x4, 0x22, 0x0, 0x1, 0x79, 0x0 })
             }
             Device(SPKR) {
                 Name(_HID, 0x0008d041)
                 Name(_CRS, Buffer(0xa) {0x47, 0x1, 0x61, 0x0, 0x61, 0x0, 0x1, 0x1, 0x79, 0x0 })
             }
             Device(COPR) {
                 Name(_HID, 0x040cd041)
                 Name(_CRS, Buffer(0xd) {0x47, 0x1, 0xf0, 0x0, 0xf0, 0x0, 0x1, 0x10, 0x22, 0x0, 0x20, 0x79, 0x0 })
             }
             OperationRegion(N393, SystemIO, 0x2e, 0x2)
             Field(N393, ByteAcc, NoLock, Preserve) {
                 NIDX,	8,
                 NDAT,	8
             }
             IndexField(NIDX, NDAT, ByteAcc, NoLock, Preserve) {
                 Offset(0x7),
                 LDNM,	8,
                 Offset(0x26),
                 FDCD,	1,
                 LPTD,	1,
                 IRD_,	1,
                 COMD,	1,
                 Offset(0x30),
                 ACTR,	8,
                 Offset(0x60),
                 IOAH,	8,
                 IOAL,	8,
                 IOBH,	8,
                 IOBL,	8,
                 Offset(0x70),
                 INTR,	8,
                 INTP,	8,
                 Offset(0x74),
                 DMCH,	8,
                 DMCL,	8,
                 Offset(0xf0),
                 OPT1,	8,
                 OPT2,	8
             }
             Method(GSTA, 1) {
                 Store(Arg0, LDNM)
                 If(ACTR) {
                     Return(0xf)
                 }
                 Else {
                     Return(0x0)
                 }
             }
             Method(GDIS, 1) {
                 Store(Arg0, LDNM)
                 Store(0x0, ACTR)
             }
             Name(COMR, Package(0x8) {
                 0x03f8,
                 0x02f8,
                 0x0220,
                 0x0228,
                 0x0238,
                 0x02e8,
                 0x0338,
                 0x03e8,
             })
             Device(MOUE) {
                 Name(_HID, 0x130fd041)
                 Name(_CRS, Buffer(0x5) {0x22, 0x0, 0x10, 0x79, 0x0 })
             }
             Device(PS2K) {
                 Name(_HID, 0x0303d041)
                 Method(_CRS) {
                     Name(BUF0, Buffer(0x16) {0x47, 0x1, 0x60, 0x0, 0x60, 0x0, 0x0, 0x1, 0x47, 0x1, 0x64, 0x0, 0x64, 0x0, 0x0, 0x1, 0x23, 0x2, 0x0, 0x1, 0x79, 0x0 })
                     Return(BUF0)
                 }
             }
             Device(FDC0) {
                 Name(_HID, 0x0007d041)
                 Method(_STA) {
                     If(FDCD) {
                         Return(0xd)
                     }
                     Else {
                         Return(0xf)
                     }
                 }
                 Method(_DIS) {
                     Store(One, FDCD)
                 }
                 Method(_CRS) {
                     Name(BUF0, Buffer(0x19) {0x47, 0x1, 0xf2, 0x3, 0xf2, 0x3, 0x0, 0x4, 0x47, 0x1, 0xf7, 0x3, 0xf7, 0x3, 0x0, 0x1, 0x23, 0x40, 0x0, 0x1, 0x2a, 0x4, 0x0, 0x79, 0x0 })
                     CreateWordField(BUF0, 0x11, IRQW)
                     CreateByteField(BUF0, 0x15, DMAV)
                     Store(Zero, LDNM)
                     Store(One, Local0)
                     ShiftLeft(Local0, INTR, IRQW)
                     Store(One, Local0)
                     ShiftLeft(Local0, DMCH, DMAV)
                     Return(BUF0)
                 }
                 Name(_PRS, Buffer(0x19) {0x47, 0x1, 0xf2, 0x3, 0xf2, 0x3, 0x0, 0x4, 0x47, 0x1, 0xf7, 0x3, 0xf7, 0x3, 0x0, 0x1, 0x23, 0x40, 0x0, 0x1, 0x2a, 0x4, 0x0, 0x79, 0x0 })
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x2, IOLO)
                     CreateByteField(Arg0, 0x3, IOHI)
                     CreateWordField(Arg0, 0x11, IRQW)
                     CreateByteField(Arg0, 0x15, DMAV)
                     Store(Zero, LDNM)
                     Store(IOHI, IOAH)
                     Store(IOLO, IOAL)
                     FindSetRightBit(IRQW, Local0)
                     Decrement(Local0)
                     Store(Local0, INTR)
                     FindSetRightBit(DMAV, Local0)
                     Decrement(Local0)
                     Store(Local0, DMCH)
                     Store(One, ACTR)
                     Store(Zero, FDCD)
                 }
             }
             Device(LPT_) {
                 Name(_HID, 0x0004d041)
                 Method(_STA) {
                     Store(GSTA, 0x1)
                     Local0
                     If(LEqual(Local0, 0xf)) {
                         Store(0x1, LDNM)
                         If(LEqual(DMCH, 0x4)) {
                             If(LPTD) {
                                 Return(0xd)
                             }
                             Else {
                                 Return(0xf)
                             }
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                     Else {
                         Return(0x0)
                     }
                 }
                 Method(_DIS) {
                     Store(One, LPTD)
                 }
                 Method(_CRS) {
                     Name(BUF5, Buffer(0xe) {0x47, 0x1, 0x78, 0x3, 0x78, 0x3, 0x0, 0x8, 0x23, 0x80, 0x0, 0x1, 0x79, 0x0 })
                     CreateByteField(BUF5, 0x2, IOLO)
                     CreateByteField(BUF5, 0x3, IOHI)
                     CreateByteField(BUF5, 0x4, IORL)
                     CreateByteField(BUF5, 0x5, IORH)
                     CreateByteField(BUF5, 0x7, IOLN)
                     CreateWordField(BUF5, 0x9, IRQW)
                     Store(0x1, LDNM)
                     Store(IOAL, IOLO)
                     Store(IOAL, IORL)
                     Store(IOAH, IOHI)
                     Store(IOAH, IORH)
                     Store(IOHI, Local0)
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, IOLO, Local0)
                     If(LEqual(Local0, 0x03bc)) {
                         Store(0x4, IOLN)
                     }
                     Store(One, Local0)
                     ShiftLeft(Local0, INTR, IRQW)
                     Return(BUF5)
                 }
                 Name(_PRS, Buffer(0x2d) {0x31, 0x5, 0x47, 0x1, 0x78, 0x3, 0x78, 0x3, 0x0, 0x8, 0x23, 0xa0, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0x78, 0x2, 0x78, 0x2, 0x0, 0x8, 0x23, 0xa0, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0xbc, 0x3, 0xbc, 0x3, 0x0, 0x4, 0x23, 0xa0, 0x0, 0x1, 0x38, 0x79, 0x0 })
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x2, IOLO)
                     CreateByteField(Arg0, 0x3, IOHI)
                     CreateWordField(Arg0, 0x9, IRQW)
                     Store(0x1, LDNM)
                     Store(IOLO, IOAL)
                     Store(IOHI, IOAH)
                     Store(IOHI, Local0)
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, IOLO, Local0)
                     FindSetRightBit(IRQW, Local0)
                     Decrement(Local0)
                     Store(Local0, INTR)
                     Store(0x2, INTP)
                     Store(One, ACTR)
                     Store(Zero, LPTD)
                 }
             }
             Device(ECP_) {
                 Name(_HID, 0x0104d041)
                 Method(_STA) {
                     Store(GSTA, 0x1)
                     Local0
                     If(LEqual(Local0, 0xf)) {
                         Store(0x1, LDNM)
                         If(LEqual(DMCH, 0x4)) {
                             Return(0x0)
                         }
                         Else {
                             If(LPTD) {
                                 Return(0xd)
                             }
                             Else {
                                 Return(0xf)
                             }
                         }
                     }
                     Else {
                         Return(0x0)
                     }
                 }
                 Method(_DIS) {
                     Store(One, LPTD)
                 }
                 Method(_CRS) {
                     Name(BUF6, Buffer(0x19) {0x47, 0x1, 0x78, 0x3, 0x78, 0x3, 0x0, 0x8, 0x47, 0x1, 0x78, 0x7, 0x78, 0x7, 0x0, 0x8, 0x23, 0x80, 0x0, 0x1, 0x2a, 0x2, 0x0, 0x79, 0x0 })
                     CreateByteField(BUF6, 0x2, IOLO)
                     CreateByteField(BUF6, 0x3, IOHI)
                     CreateByteField(BUF6, 0x4, IORL)
                     CreateByteField(BUF6, 0x5, IORH)
                     CreateByteField(BUF6, 0x7, IOLN)
                     CreateByteField(BUF6, 0xa, I2LO)
                     CreateByteField(BUF6, 0xb, I2HI)
                     CreateByteField(BUF6, 0xc, I2RL)
                     CreateByteField(BUF6, 0xd, I2RH)
                     CreateWordField(BUF6, 0x11, IRQW)
                     CreateByteField(BUF6, 0x15, DMAC)
                     Store(0x1, LDNM)
                     Store(IOAL, IOLO)
                     Store(IOLO, IORL)
                     Store(IOLO, I2LO)
                     Store(IOLO, I2RL)
                     Store(IOAH, IOHI)
                     Store(IOHI, IORH)
                     Add(IOHI, 0x4, I2HI)
                     Add(IOHI, 0x4, I2RH)
                     Store(IOHI, Local0)
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, IOLO, Local0)
                     If(LEqual(Local0, 0x03bc)) {
                         Store(0x4, IOLN)
                     }
                     Else {
                         Store(0x8, IOLN)
                     }
                     Store(One, Local0)
                     ShiftLeft(Local0, INTR, IRQW)
                     Store(One, Local0)
                     ShiftLeft(Local0, DMCH, DMAC)
                     Return(BUF6)
                 }
                 Name(_PRS, Buffer(0x4e) {0x31, 0x5, 0x47, 0x1, 0x78, 0x3, 0x78, 0x3, 0x0, 0x8, 0x47, 0x1, 0x78, 0x7, 0x78, 0x7, 0x0, 0x8, 0x23, 0xa0, 0x0, 0x1, 0x2a, 0xb, 0x0, 0x31, 0x5, 0x47, 0x1, 0x78, 0x2, 0x78, 0x2, 0x0, 0x8, 0x47, 0x1, 0x78, 0x6, 0x78, 0x6, 0x0, 0x8, 0x23, 0xa0, 0x0, 0x1, 0x2a, 0xb, 0x0, 0x31, 0x5, 0x47, 0x1, 0xbc, 0x3, 0xbc, 0x3, 0x0, 0x4, 0x47, 0x1, 0xbc, 0x7, 0xbc, 0x7, 0x0, 0x8, 0x23, 0xa0, 0x0, 0x1, 0x2a, 0xb, 0x0, 0x38, 0x79, 0x0 })
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x2, IOLO)
                     CreateByteField(Arg0, 0x3, IOHI)
                     CreateWordField(Arg0, 0x11, IRQW)
                     CreateByteField(Arg0, 0x15, DMAC)
                     Store(0x1, LDNM)
                     Store(IOLO, IOAL)
                     Store(IOHI, IOAH)
                     Store(IOHI, Local0)
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, IOLO, Local0)
                     FindSetRightBit(IRQW, Local0)
                     Decrement(Local0)
                     Store(Local0, INTR)
                     FindSetRightBit(DMAC, Local0)
                     Decrement(Local0)
                     Store(Local0, DMCH)
                     Store(One, ACTR)
                     Store(Zero, LPTD)
                 }
             }
             Device(UAR1) {
                 Name(_HID, 0x0105d041)
                 Name(_UID, 0x1)
                 Method(_STA) {
                     Return(GSTA)
                     0x3
                 }
                 Method(_DIS) {
                 }
                 Method(_CRS) {
                     Name(BUF1, Buffer(0xe) {0x47, 0x1, 0xf8, 0x3, 0xf8, 0x3, 0x0, 0x8, 0x23, 0x10, 0x0, 0x1, 0x79, 0x0 })
                     CreateByteField(BUF1, 0x2, IOLO)
                     CreateByteField(BUF1, 0x3, IOHI)
                     CreateByteField(BUF1, 0x4, IORL)
                     CreateByteField(BUF1, 0x5, IORH)
                     CreateWordField(BUF1, 0x9, IRQW)
                     Store(0x3, LDNM)
                     Store(IOAL, IOLO)
                     Store(IOAL, IORL)
                     Store(IOAH, IOHI)
                     Store(IOAH, IORH)
                     Store(One, Local0)
                     ShiftLeft(Local0, INTR, IRQW)
                     Return(BUF1)
                 }
                 Name(_PRS, Buffer(0x3b) {0x31, 0x5, 0x47, 0x1, 0xf8, 0x3, 0xf8, 0x3, 0x0, 0x8, 0x23, 0x10, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0xe8, 0x3, 0xe8, 0x3, 0x0, 0x8, 0x23, 0x10, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0xe8, 0x2, 0xe8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x38, 0x79, 0x0 })
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x2, IOLO)
                     CreateByteField(Arg0, 0x3, IOHI)
                     CreateWordField(Arg0, 0x9, IRQW)
                     Store(0x3, LDNM)
                     Store(IOLO, IOAL)
                     Store(IOHI, IOAH)
                     Store(IOHI, Local0)
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, IOLO, Local0)
                     FindSetRightBit(IRQW, Local0)
                     Decrement(Local0)
                     Store(Local0, INTR)
                     Store(One, ACTR)
                 }
             }
             Device(IRDA) {
                 Name(_HID, 0x1005d041)
                 Method(_STA) {
                     Store(0x2, LDNM)
                     If(ACTR) {
                         If(LEqual(DMCH, 0x4)) {
                             Return(0xf)
                         }
                         Else {
                             Return(0x0)
                         }
                     }
                     Else {
                         Return(0x0)
                     }
                 }
                 Method(_DIS) {
                 }
                 Method(_CRS) {
                     Name(BUF1, Buffer(0xe) {0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x79, 0x0 })
                     CreateByteField(BUF1, 0x2, IOLO)
                     CreateByteField(BUF1, 0x3, IOHI)
                     CreateByteField(BUF1, 0x4, IORL)
                     CreateByteField(BUF1, 0x5, IORH)
                     CreateWordField(BUF1, 0x9, IRQW)
                     Store(0x2, LDNM)
                     Store(IOAL, IOLO)
                     Store(IOAL, IORL)
                     Store(IOAH, IOHI)
                     Store(IOAH, IORH)
                     Store(One, Local0)
                     ShiftLeft(Local0, INTR, IRQW)
                     Return(BUF1)
                 }
                 Name(_PRS, Buffer(0x3b) {0x31, 0x5, 0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0xf8, 0x3, 0xf8, 0x3, 0x0, 0x8, 0x23, 0x10, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0xe8, 0x2, 0xe8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x31, 0x5, 0x47, 0x1, 0xe8, 0x3, 0xe8, 0x3, 0x0, 0x8, 0x23, 0x10, 0x0, 0x1, 0x38, 0x79, 0x0 })
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x2, IOLO)
                     CreateByteField(Arg0, 0x3, IOHI)
                     CreateWordField(Arg0, 0x9, IRQW)
                     Store(0x2, LDNM)
                     Store(IOLO, IOAL)
                     Store(IOHI, IOAH)
                     Store(IOHI, Local0)
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, IOLO, Local0)
                     FindSetRightBit(IRQW, Local0)
                     Decrement(Local0)
                     Store(Local0, INTR)
                     Store(One, ACTR)
                     Store(Zero, IRD_)
                 }
             }
             Device(FIR_) {
                 Name(_HID, 0x0160633a)
                 Method(_STA) {
                     Store(0x2, LDNM)
                     If(ACTR) {
                         If(LEqual(DMCH, 0x4)) {
                             Return(0x0)
                         }
                         Else {
                             Return(0xf)
                         }
                     }
                     Else {
                         Return(0x0)
                     }
                 }
                 Method(_DIS) {
                 }
                 Method(_CRS) {
                     Name(BUF1, Buffer(0x11) {0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x2a, 0x2, 0x0, 0x79, 0x0 })
                     CreateByteField(BUF1, 0x2, IOLO)
                     CreateByteField(BUF1, 0x3, IOHI)
                     CreateByteField(BUF1, 0x4, IORL)
                     CreateByteField(BUF1, 0x5, IORH)
                     CreateWordField(BUF1, 0x9, IRQW)
                     CreateWordField(BUF1, 0xd, DMAV)
                     Store(0x2, LDNM)
                     Store(IOAL, IOLO)
                     Store(IOAL, IORL)
                     Store(IOAH, IOHI)
                     Store(IOAH, IORH)
                     Store(One, Local0)
                     ShiftLeft(Local0, INTR, IRQW)
                     Store(One, Local0)
                     ShiftLeft(Local0, DMCH, DMAV)
                     Return(BUF1)
                 }
                 Name(_PRS, Buffer(0x47) {0x31, 0x5, 0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x2a, 0xa, 0x0, 0x31, 0x5, 0x47, 0x1, 0xf8, 0x3, 0xf8, 0x3, 0x0, 0x8, 0x23, 0x10, 0x0, 0x1, 0x2a, 0xa, 0x0, 0x31, 0x5, 0x47, 0x1, 0xe8, 0x2, 0xe8, 0x2, 0x0, 0x8, 0x23, 0x8, 0x0, 0x1, 0x2a, 0xa, 0x0, 0x31, 0x5, 0x47, 0x1, 0xe8, 0x3, 0xe8, 0x3, 0x0, 0x8, 0x23, 0x10, 0x0, 0x1, 0x2a, 0xa, 0x0, 0x38, 0x79, 0x0 })
                 Method(_SRS, 1) {
                     CreateByteField(Arg0, 0x2, IOLO)
                     CreateByteField(Arg0, 0x3, IOHI)
                     CreateWordField(Arg0, 0x9, IRQW)
                     CreateByteField(Arg0, 0xd, DMAC)
                     Store(0x2, LDNM)
                     Store(IOLO, IOAL)
                     Store(IOHI, IOAH)
                     Store(IOHI, Local0)
                     ShiftLeft(Local0, 0x8, Local0)
                     Add(Local0, IOLO, Local0)
                     FindSetRightBit(IRQW, Local0)
                     Decrement(Local0)
                     Store(Local0, INTR)
                     FindSetRightBit(DMAC, Local0)
                     Decrement(Local0)
                     Store(Local0, DMCH)
                     Store(One, ACTR)
                     Store(Zero, IRD_)
                 }
             }
             Device(GAME) {
                 Name(_HID, 0x2fb0d041)
                 Method(_STA) {
                     Return(0xf)
                 }
                 Method(_CRS) {
                     Name(BUF2, Buffer(0xa) {0x47, 0x1, 0x0, 0x2, 0x0, 0x2, 0x8, 0x8, 0x79, 0x0 })
                     Return(BUF2)
                 }
             }
         }
         Device(PX43) {
             Name(_ADR, 0x001f0003)
             OperationRegion(OPSM, PCI_Config, 0x0, 0x24)
             Field(OPSM, WordAcc, NoLock, Preserve) {
                 Offset(0x4),
                 PCMD,	16,
                 Offset(0x20),
                 SMBS,	16
             }
             Method(FNEN) {
                 Store(0xe800, Local0)
                 Increment(Local0)
                 Store(Local0, SMBS)
                 Store(One, PCMD)
             }
         }
         Device(USB0) {
             Name(_ADR, 0x001f0002)
             Method(_S1D) {
                 Return(0x1)
             }
             OperationRegion(URE0, PCI_Config, 0xc4, 0x1)
             Field(URE0, ByteAcc, NoLock, Preserve) {
                 U0PE,	8
             }
             Method(_PRW) {
                 Return(SPRW)
                 0x3
             }
             Method(_PSW, 1) {
                 If(LEqual(Arg0, One)) {
                     Store(0x3, U0PE)
                 }
                 Else {
                     Store(Zero, U0PE)
                 }
             }
         }
         Device(USB1) {
             Name(_ADR, 0x001f0004)
             Method(_S1D) {
                 Return(0x1)
             }
             OperationRegion(URE1, PCI_Config, 0xc4, 0x1)
             Field(URE1, ByteAcc, NoLock, Preserve) {
                 U1PE,	8
             }
             Method(_PRW) {
                 Return(SPRW)
                 0x4
             }
             Method(_PSW, 1) {
                 If(LEqual(Arg0, One)) {
                     Store(0x3, U1PE)
                 }
                 Else {
                     Store(Zero, U1PE)
                 }
             }
         }
         Device(AC97) {
             Name(_ADR, 0x001f0006)
             Name(_PRW, Package(0x2) {
                 0x5,
                 0x3,
             })
         }
         Device(VID0) {
             Name(_ADR, 0x00020000)
             Name(DOSD, 0x1)
             Name(DISU, 0x3)
             Name(VSTT, Package(0x4) {
                 0x3,
                 0x3,
                 0x1,
                 0x2,
             })
             Method(_S3D) {
                 Return(0x3)
             }
             Method(_DOS, 1) {
                 Store(Arg0, DOSD)
                 If(LNot(LEqual(Arg0, 0x1))) {
                     Acquire(\_SB_.PCI0.PX40.EC0_.MTXE, 0xffff)
                     Store(0xd3, \_SB_.PCI0.PX40.EC0_.CDA2)
                     Store(0x1, \_SB_.PCI0.PX40.EC0_.CDA3)
                     Store(0xba, \_SB_.PCI0.PX40.EC0_.CCMD)
                     Store(\_SB_.PCI0.PX40.EC0_.CDA1, Local0)
                     Or(Local0, 0x80, Local0)
                     Store(Local0, \_SB_.PCI0.PX40.EC0_.CDA1)
                     Store(0xbb, \_SB_.PCI0.PX40.EC0_.CCMD)
                     Release(\_SB_.PCI0.PX40.EC0_.MTXE)
                 }
             }
             Method(_DOD) {
                 Return(Package(0x2) {
                     0x00010100,
                     0x00010200,
                 })
             }
             Device(CRT_) {
                 Name(_ADR, 0x0100)
                 Method(_DCS) {
                     Return(0x1f)
                 }
                 Method(_DGS) {
                     Return(And(DISU, 0x1, ))
                 }
                 Method(_DSS, 1) {
                     Store(Arg0, Local0)
                 }
             }
             Device(LCD_) {
                 Name(_ADR, 0x0200)
                 Method(_DCS) {
                     Return(0x1f)
                 }
                 Method(_DGS) {
                     Return(And(DISU, 0x2, ))
                 }
                 Method(_DSS, 1) {
                     Store(Arg0, Local0)
                 }
                 Method(_BCL) {
                     Name(BUFF, Package(0x8) {
                         0x0,
                         0x20,
                         0x40,
                         0x60,
                         0x80,
                         0xa0,
                         0xc0,
                         0xe0,
                     })
                     Return(BUFF)
                 }
                 Method(_BCM, 1) {
                 }
             }
         }
         Scope(\_SB_.PCI0.PCI1) {
             Device(CDB0) {
                 Name(_ADR, 0x00070000)
             }
             Device(LAN_) {
                 Name(_ADR, 0x00080000)
                 Name(_PRW, Package(0x2) {
                     0xb,
                     0x4,
                 })
             }
         }
     }
 }
 BOOT: Lenth=40, Revision=1, Checksum=160,
 	OEMID=ASUS, OEM Table ID=M1000A, OEM Revision=0x30303031,
 	Creator ID=MSFT, Creator Revision=0x31313031
 -- 
 Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
 phk@FreeBSD.ORG         | TCP/IP since RFC 956
 FreeBSD committer       | BSD since 4.3-tahoe    
 Never attribute to malice what can adequately be explained by incompetence.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200109162110.f8GLA1O21066>