Bug 30617

Summary: [PATCH] ACPI bug: don't dereference a pointer you have set to NULL
Product: Base System Reporter: Poul-Henning Kamp <phk>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 5.0-CURRENT   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description Poul-Henning Kamp 2001-09-16 22:00:01 UTC
	In AcpiExDyadic1() a DEBUG statement tried to dereference the pointer 
	"Operand[0]" which has explictly been set to NULL earlier in the same
	function.  This panics the kernel.

Fix: This patch is a workaround, I don't know enough about the ACPI code to judge if
	the setting of "Operand[0] = NULL" is kosher or bogus, so I have simply added
	an if() to avoid dereferencing the NULL pointer.

How-To-Repeat: 	Pull the powerplug on an Asus M1300 machine with bios 1.05
Comment 1 Poul-Henning Kamp 2001-09-16 22:02:34 UTC
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.
Comment 2 iwasaki 2001-10-02 12:00:47 UTC
It seems that this was fixed in the next Intel ACPICA snapshot,
acpica-unix-20010920.  This will be imported shortly.
Thanks
Comment 3 Mitsuru IWASAKI freebsd_committer freebsd_triage 2001-11-07 14:22:21 UTC
State Changed
From-To: open->closed

This was fixed in newer Intel ACPICA snapshots, 
acpica-unix-20010920 or later.