← Back to team overview

hybrid-graphics-linux team mailing list archive

Re: DSDT tables needed -- AMD muxless BACON switchable graphics laptops

 

On 06/18/2011 06:09 AM, Albert Vilella wrote:
If you have a laptop with AMD muxless BACON switchable graphics
technology[1,2], please provide the DSDT tables as explained here:
http://linux-hybrid-graphics.blogspot.com/

[1] http://www.rage3d.com/articles/amd_powerxpress4_asif_rehman_interview/
[2] http://www.notebookcheck.net/AMD-PowerXPress-4-0-aka-BACON-vs-Nvidia-Optimus.55204.0.html

_______________________________________________
Mailing list: https://launchpad.net/~hybrid-graphics-linux
Post to     : hybrid-graphics-linux@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~hybrid-graphics-linux
More help   : https://help.launchpad.net/ListHelp
Attached is an ACPI dump from an HP dv6tqe 6100 series with the HD 3000 and 6770M 2GB.

A kind person from notebookforums provided it. Open using gedit or your favorite text editor.

Hope this is useful. I'll be posting more as I get them.

- Eric
Root System Description Pointer: 0x000FE020

52 53 44 20 50 54 52 20 EE 48 50 51 4F 45 4D 02	RSD PTR .HPQOEM.
AC E0 FF 9C 24 00 00 00 20 E1 FF 9C 00 00 00 00	....$... .......
40 00 00 00                                    	@...            

Signature	"RSD PTR "
Checksum	0xEE (238)
OEM ID	"HPQOEM"
Revision	0x02 (2) - ACPI 2.0
RSDT Address	0x9CFFE0AC
Length	0x00000024
XsdtAddress	0x000000009CFFE120
Extended Checksum	0x40 (64)
Reserved	0x00 0x00 0x00 

Root System Description Table: 0x9CFFE0AC

52 53 44 54 60 00 00 00 01 F1 48 50 51 4F 45 4D	RSDT`.....HPQOEM
53 4C 49 43 2D 4D 50 43 01 00 00 00 20 20 20 20	SLIC-MPC....    
13 00 00 01 00 C0 FF 9C 00 D0 FF 9C 00 B0 FF 9C	................
00 A0 FF 9C 00 90 FF 9C 00 B0 FE 9C 00 A0 FE 9C	................
00 80 FE 9C 00 50 FE 9C 00 40 FE 9C 00 30 FE 9C	.....P...@...0..
00 20 FE 9C 00 10 FE 9C 00 00 FE 9C 00 A0 FD 9C	. ..............

Signature	"RSDT"
Length	0x00000060 (96)
Revision	0x01 (1)
Checksum	0xF1 (241)
OEM ID	"HPQOEM"
OEM Table ID	"SLIC-MPC"
OEM Revision	0x00000001 (1)
Creator ID	"    "
Creator Revision	0x01000013 (16777235)
Entry0	0x9CFFC000
Entry1	0x9CFFD000
Entry2	0x9CFFB000
Entry3	0x9CFFA000
Entry4	0x9CFF9000
Entry5	0x9CFEB000
Entry6	0x9CFEA000
Entry7	0x9CFE8000
Entry8	0x9CFE5000
Entry9	0x9CFE4000
Entry10	0x9CFE3000
Entry11	0x9CFE2000
Entry12	0x9CFE1000
Entry13	0x9CFE0000
Entry14	0x9CFDA000

Fixed ACPI Description Table: 0x9CFFC000

46 41 43 50 F4 00 00 00 04 33 48 50 51 4F 45 4D	FACP.....3HPQOEM
53 4C 49 43 2D 4D 50 43 01 00 00 00 4D 53 46 54	SLIC-MPC....MSFT
13 00 00 01 00 C0 F6 9C 00 C0 FE 9C 01 02 09 00	................
B2 00 00 00 A0 A1 00 80 00 04 00 00 00 00 00 00	................
04 04 00 00 00 00 00 00 50 04 00 00 08 04 00 00	........P.......
20 04 00 00 00 00 00 00 04 02 01 04 10 00 00 85	 ...............
65 00 39 00 00 04 10 00 01 03 0D 00 32 13 00 00	e.9.........2...
A5 86 03 00 01 08 00 01 B2 00 00 00 00 00 00 00	................
FB 00 00 00 00 C0 F6 9C 00 00 00 00 00 C0 FE 9C	................
00 00 00 00 01 20 00 03 00 04 00 00 00 00 00 00	..... ..........
00 00 00 00 00 00 00 00 00 00 00 00 01 10 00 02	................
04 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00	................
00 00 00 00 01 08 00 01 50 04 00 00 00 00 00 00	........P.......
01 20 00 03 08 04 00 00 00 00 00 00 01 80 00 00	. ..............
20 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00	 ...............
00 00 00 00                                    	....            

Signature	"FACP"
Length	0x000000F4 (244)
Revision	0x04 (4)
Checksum	0x33 (51)
OEM ID	"HPQOEM"
OEM Table ID	"SLIC-MPC"
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
Firmware Control	0x9CF6C000 - FACS
DSDT Address	0x9CFEC000 - DSDT
Interrupt Mode	0x01 (1) - Multiple APIC
PM Profile	0x02 (2)
SCI Interrupt	0x0009 (9)
SMI Port	0x000000B2 (178)
ACPI Enable	0xA0 (160)
ACPI Disable	0xA1 (161)
S4 Request	0x00 (0) - Not supported
PSTATE_CNT	0x80 (128)
PM1a_EVT_BLK	0x00000400 (1024)
PM1b_EVT_BLK	0x00000000 (0) - Not supported
PM1a_CNT_BLK	0x00000404 (1028)
PM1b_CNT_BLK	0x00000000 (0) - Not supported
PM2_CNT_BLK	0x00000450 (1104)
PM_TMR_BLK	0x00000408 (1032)
GPE0_BLK	0x00000420 (1056)
GPE1_BLK	0x00000000 (0) - Not supported
PM1_EVT_LEN	0x04 (4)
PM1_CNT_LEN	0x02 (2)
PM2_CNT_LEN	0x01 (1)
PM_TMR_LEN	0x04 (4)
GPE0_BLK_LEN	0x10 (16)
GPE1_BLK_LEN	0x00 (0)
GPE1_BASE	0x00 (0)
CST_CNT	0x85 (133)
P_LVL2_LAT	0x0065 (101) - C2 state not supported
P_LVL3_LAT	0x0039 (57)
FLUSH_SIZE	0x0400 (1024)
FLUSH_STRIDE	0x0010 (16)
DUTY_OFFSET	0x01 (1)
DUTY_WIDTH	0x03 (3)
DAY_ALRM	0x0D (13)
MON_ALRM	0x00 (0) - Month alarm not supported
CENTURY	0x32 (50)
IAPC_Boot_Arch	0x13 0x00 
Reserved	0x00 (0)
Flags	0x000386A5
  WBINVD	1 - WBINVD instruction fully supported
  WBINVD_Flush	0 - WBINVD instruction not for sleep states (Don't care if WBINVD=1)
  PROC_C1	1 - C1 power state: all processors
  P_LVL2_UP	0 - C2 power state: UP system only
  PWR_BUTTON	0 - Power button supported as fixed feature
  SLP_BUTTON	1 - Sleep button not support or handled by ASL code
  FIX_RTC	0 - Fixed register support RTC wake
  RTC_S4	1 - RTC wakeup support: S1, S2, S3, S4
  TMR_VAL_EXT	0 - 24bit PM Timer
  DCK_CAP	1 - Docking supported
  RESET_REG_SUP	1 - Reset Register supported
  SEALED_CASE	0 - System is not sealed
  HEADLESS	0 - Not headless mode
  CPU_SW_SLP	0 - Normal method to write SLP_TYPx
  PCI_EXP_WAK	0 - PM1 block does not support PCIE wakeup event bits
  USE_PLATFORM_CLOCK	1 - OSPM use HPET (if exist) or ACPI PM Timer
  S4_RTC_STS_VALID	1 - RTC_STS flag is valid when resume from S4
  REMOTE_POWER_ON_CAPABLE	1 - System compatible with remote power on
  FORCE_APIC_CLUSTER_MODEL	0 - Cluster destination model not required
  FORCE_APIC_PHYSICAL_DESTINATION_MODE	0 - Physical destination mode not required

ASF! Table: 0x9CFFD000

41 53 46 21 A5 00 00 00 20 5D 48 50 20 20 20 20	ASF!.... ]HP    
49 4E 53 59 44 45 20 20 01 00 00 00 4D 53 46 54	INSYDE  ....MSFT
13 00 00 01 00 00 10 00 05 FF 01 00 00 00 01 57	...............W
00 00 00 00 01 00 2C 00 00 00 03 0C 89 04 01 01	......,.........
05 6F 00 68 08 88 17 00 89 04 04 04 07 6F 00 68	.o.h.........o.h
20 88 03 00 89 05 01 01 19 6F 00 68 20 88 22 00	 ........o.h .".
02 00 18 00 04 04 00 00 00 88 00 03 01 88 00 02	................
02 88 00 01 03 88 00 04 03 00 17 00 20 F8 00 00	............ ...
00 1F F0 00 00 00 00 00 00 00 00 00 00 00 00 84	................
00 16 00 00 10 5C 68 88 C2 D2 DC A0 A2 A4 A6 C8	.....\h.........
00 00 00 00 00                                 	.....           

Signature	"ASF!"
Length	0x000000A5 (165)
Revision	0x20 (32)
Checksum	0x5D (93)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
Data	0x00 0x00 0x10 0x00 0x05 0xFF 0x01 0x00 0x00 0x00 0x01 0x57 0x00 0x00 0x00 0x00 
Data	0x01 0x00 0x2C 0x00 0x00 0x00 0x03 0x0C 0x89 0x04 0x01 0x01 0x05 0x6F 0x00 0x68 
Data	0x08 0x88 0x17 0x00 0x89 0x04 0x04 0x04 0x07 0x6F 0x00 0x68 0x20 0x88 0x03 0x00 
Data	0x89 0x05 0x01 0x01 0x19 0x6F 0x00 0x68 0x20 0x88 0x22 0x00 0x02 0x00 0x18 0x00 
Data	0x04 0x04 0x00 0x00 0x00 0x88 0x00 0x03 0x01 0x88 0x00 0x02 0x02 0x88 0x00 0x01 
Data	0x03 0x88 0x00 0x04 0x03 0x00 0x17 0x00 0x20 0xF8 0x00 0x00 0x00 0x1F 0xF0 0x00 
Data	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x84 0x00 0x16 0x00 0x00 
Data	0x10 0x5C 0x68 0x88 0xC2 0xD2 0xDC 0xA0 0xA2 0xA4 0xA6 0xC8 0x00 0x00 0x00 0x00 
Data	0x00 

High Precision Event Timers Table: 0x9CFFB000

48 50 45 54 38 00 00 00 01 2C 48 50 20 20 20 20	HPET8....,HP    
49 4E 53 59 44 45 20 20 01 00 00 00 4D 53 46 54	INSYDE  ....MSFT
13 00 00 01 01 A2 86 80 00 00 00 00 00 00 D0 FE	................
00 00 00 00 00 80 00 00                        	........        

Signature	"HPET"
Length	0x00000038 (56)
Revision	0x01 (1)
Checksum	0x2C (44)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
Event Timer Block ID	0x8086A201
 Bit[31:16]=Vendor	Intel Corporation
 Bit[15]=LegacyReplacement IRQ Routing	Capable
 Bit[13]=Counter Size	64-bits
 Bit[12:8]=Number of Timers	0x03 (3)
 Bit[7:0]:Revision ID	0x01 (1)
Base Address	Memory: 0xFED00000, BitWidth: 0x0 (0), BitOffset: 0x0 (0), AccessSize: Undefined
HPET Number	0x00 (0)
Minimum Clock Tick	0x0080 (128)
Page Protection & OEM Attribute	0x00 (0)

Multiple APIC Description Table: 0x9CFFA000

41 50 49 43 8C 00 00 00 02 77 48 50 20 20 20 20	APIC.....wHP    
49 4E 53 59 44 45 20 20 01 00 00 00 4D 53 46 54	INSYDE  ....MSFT
13 00 00 01 00 00 E0 FE 01 00 00 00 00 08 01 00	................
01 00 00 00 00 08 02 01 01 00 00 00 00 08 03 02	................
01 00 00 00 00 08 04 03 01 00 00 00 00 08 05 04	................
01 00 00 00 00 08 06 05 01 00 00 00 00 08 07 06	................
01 00 00 00 00 08 08 07 01 00 00 00 01 0C 00 00	................
00 00 C0 FE 00 00 00 00 02 0A 00 00 02 00 00 00	................
00 00 02 0A 00 09 09 00 00 00 0D 00            	............    

Signature	"APIC"
Length	0x0000008C (140)
Revision	0x02 (2)
Checksum	0x77 (119)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
Local APIC	0xFEE00000
Flags	0x00000001
  Dual-8259	1 - Yes
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x01 (1)
  APIC ID	0x00 (0)
  Flags	0x00000001 (1) - Enabled
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x02 (2)
  APIC ID	0x01 (1)
  Flags	0x00000001 (1) - Enabled
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x03 (3)
  APIC ID	0x02 (2)
  Flags	0x00000001 (1) - Enabled
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x04 (4)
  APIC ID	0x03 (3)
  Flags	0x00000001 (1) - Enabled
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x05 (5)
  APIC ID	0x04 (4)
  Flags	0x00000001 (1) - Enabled
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x06 (6)
  APIC ID	0x05 (5)
  Flags	0x00000001 (1) - Enabled
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x07 (7)
  APIC ID	0x06 (6)
  Flags	0x00000001 (1) - Enabled
Processor Local APIC Structure
  Type	0x00 (0)
  Length	0x08 (8)
  ACPI Processor ID	0x08 (8)
  APIC ID	0x07 (7)
  Flags	0x00000001 (1) - Enabled
I/O APIC Structure
  Type	0x01 (1)
  Length	0x0C (12)
  I/O APIC ID	0x00 (0)
  Reserved	0x00 (0)
  I/O APIC Address	0xFEC00000
  System Interrupt Base	0x00000000 (0)
Interrupt Source Override Structure
  Type	0x02 (2)
  Length	0x0A (10)
  Bus	0x00 (0) - ISA
  Source	IRQ0
  System Interrupt	0x00000002 (2)
  Flags	0x0000
    Polarity	0x00 - Conforms to the specifications of the bus
    Trigger Mode	0x00 - Conforms to the specifications of the bus
Interrupt Source Override Structure
  Type	0x02 (2)
  Length	0x0A (10)
  Bus	0x00 (0) - ISA
  Source	IRQ9
  System Interrupt	0x00000009 (9)
  Flags	0x000D
    Polarity	0x01 - Active high
    Trigger Mode	0x03 - Level triggered

Memory Mapped Configuration Space Base Address Description Table: 0x9CFF9000

4D 43 46 47 3C 00 00 00 01 54 48 50 20 20 20 20	MCFG<....THP    
49 4E 53 59 44 45 20 20 01 00 00 00 4D 53 46 54	INSYDE  ....MSFT
13 00 00 01 00 00 00 00 00 00 00 00 00 00 00 E0	................
00 00 00 00 00 00 00 FF 00 00 00 00            	............    

Signature	"MCFG"
Length	0x0000003C (60)
Revision	0x01 (1)
Checksum	0x54 (84)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
Reserved	0x0000000000000000
Configuration Base Address Allocation
  Base Address	0x00000000E0000000
  PCI Segment	0x0000 (0)
  Start Bus Number	0x00 (0)
  End Bus Number	0xFF (255)
  Reserved	0x00000000 (0)

Software Licensing Description Table: 0x9CFEB000

53 4C 49 43 76 01 00 00 01 67 48 50 51 4F 45 4D	SLICv....gHPQOEM
53 4C 49 43 2D 4D 50 43 01 00 00 00 4D 53 46 54	SLIC-MPC....MSFT
13 00 00 01 00 00 00 00 9C 00 00 00 06 02 00 00	................
00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00	.$..RSA1........
5B AB 60 56 BC 58 1E E8 C1 D2 A1 5C E5 4F BB FD	[.`V.X.....\.O..
1D A9 8C 94 B4 AE 08 11 DC 13 59 D3 7F F6 3E 87	..........Y...>.
31 B9 95 74 10 DA 3B A4 5B B5 19 82 7C 39 D7 0D	1..t..;.[...|9..
7C 22 AC 1C 2A 84 E9 0A 88 6D FA B1 E2 D8 E8 21	|"..*....m.....!
96 E1 2E 68 9A BF 44 45 3E 3C 8E 99 90 DE 37 38	...h..DE><....78
57 0B 92 15 BC DE FF F2 07 7E B5 40 8C 51 3A C3	W........~.@.Q:.
02 48 F6 13 12 72 FB 42 78 E6 47 88 54 C7 B0 F0	.H...r.Bx.G.T...
93 9E FB 04 B7 B8 B8 90 DE DB ED 32 E1 FB 54 A6	...........2..T.
01 00 00 00 B6 00 00 00 00 00 02 00 48 50 51 4F	............HPQO
45 4D 53 4C 49 43 2D 4D 50 43 57 49 4E 44 4F 57	EMSLIC-MPCWINDOW
53 20 01 00 02 00 00 00 00 00 00 00 00 00 00 00	S ..............
00 00 00 00 00 00 30 90 1F B4 A4 BE 80 1E E9 33	......0........3
EC 7F FC B1 28 0E A6 CE 43 72 8C 79 30 B4 F4 59	....(...Cr.y0..Y
EA 7D CF B7 11 8B DA 70 C5 C8 3F 79 20 08 6F 64	.}.....p..?y .od
CA 07 88 B3 B1 16 B4 BA 1A F1 85 52 B1 F5 07 55	...........R...U
B5 70 61 EF 44 8C AA 5F 78 14 66 98 9C F3 58 D8	.pa.D.._x.f...X.
AA 48 E0 37 F8 F6 AB 64 FA DA 17 2A 62 E3 04 1D	.H.7...d...*b...
32 2D D5 EA 33 66 5C 5B 3B 0E F7 09 66 42 32 AA	2-..3f\[;...fB2.
14 99 C3 EE 1A 62 3B 07 5F F0 48 44 C4 E6 32 59	.....b;._.HD..2Y
1F 14 3E F1 B2 38                              	..>..8          

Signature	"SLIC"
Length	0x00000176 (374)
Revision	0x01 (1)
Checksum	0x67 (103)
OEM ID	"HPQOEM"
OEM Table ID	"SLIC-MPC"
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
OEM Public Key Structure
  Type	0x00000000 (0)
  Length	0x0000009C (156)
  Key Type	0x06 (6)
  Version	0x02 (2)
  Reserved	0x0000 (0)
  Algorithm	0x00002400 (9216)
  Magic	"RSA1"
  Bit Length	0x00000400 (1024)
  Exponent	0x00010001 (65537)
  Modulus	0x5B 0xAB 0x60 0x56 0xBC 0x58 0x1E 0xE8 0xC1 0xD2 0xA1 0x5C 0xE5 0x4F 0xBB 0xFD 
         	0x1D 0xA9 0x8C 0x94 0xB4 0xAE 0x08 0x11 0xDC 0x13 0x59 0xD3 0x7F 0xF6 0x3E 0x87 
         	0x31 0xB9 0x95 0x74 0x10 0xDA 0x3B 0xA4 0x5B 0xB5 0x19 0x82 0x7C 0x39 0xD7 0x0D 
         	0x7C 0x22 0xAC 0x1C 0x2A 0x84 0xE9 0x0A 0x88 0x6D 0xFA 0xB1 0xE2 0xD8 0xE8 0x21 
         	0x96 0xE1 0x2E 0x68 0x9A 0xBF 0x44 0x45 0x3E 0x3C 0x8E 0x99 0x90 0xDE 0x37 0x38 
         	0x57 0x0B 0x92 0x15 0xBC 0xDE 0xFF 0xF2 0x07 0x7E 0xB5 0x40 0x8C 0x51 0x3A 0xC3 
         	0x02 0x48 0xF6 0x13 0x12 0x72 0xFB 0x42 0x78 0xE6 0x47 0x88 0x54 0xC7 0xB0 0xF0 
         	0x93 0x9E 0xFB 0x04 0xB7 0xB8 0xB8 0x90 0xDE 0xDB 0xED 0x32 0xE1 0xFB 0x54 0xA6 
SLIC Marker Structure
  Type	0x00000001 (1)
  Length	0x000000B6 (182)
  Version	0x00020000 (131072)
  OEM ID	"HPQOEM"
  OEM Table ID	"SLIC-MPC"
  Windows Flag	"WINDOWS "
  Reserved	0x01 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
  Signature	0x30 0x90 0x1F 0xB4 0xA4 0xBE 0x80 0x1E 0xE9 0x33 0xEC 0x7F 0xFC 0xB1 0x28 0x0E 
           	0xA6 0xCE 0x43 0x72 0x8C 0x79 0x30 0xB4 0xF4 0x59 0xEA 0x7D 0xCF 0xB7 0x11 0x8B 
           	0xDA 0x70 0xC5 0xC8 0x3F 0x79 0x20 0x08 0x6F 0x64 0xCA 0x07 0x88 0xB3 0xB1 0x16 
           	0xB4 0xBA 0x1A 0xF1 0x85 0x52 0xB1 0xF5 0x07 0x55 0xB5 0x70 0x61 0xEF 0x44 0x8C 
           	0xAA 0x5F 0x78 0x14 0x66 0x98 0x9C 0xF3 0x58 0xD8 0xAA 0x48 0xE0 0x37 0xF8 0xF6 
           	0xAB 0x64 0xFA 0xDA 0x17 0x2A 0x62 0xE3 0x04 0x1D 0x32 0x2D 0xD5 0xEA 0x33 0x66 
           	0x5C 0x5B 0x3B 0x0E 0xF7 0x09 0x66 0x42 0x32 0xAA 0x14 0x99 0xC3 0xEE 0x1A 0x62 
           	0x3B 0x07 0x5F 0xF0 0x48 0x44 0xC4 0xE6 0x32 0x59 0x1F 0x14 0x3E 0xF1 0xB2 0x38 

Secondary System Description Table: 0x9CFEA000

Signature	"SSDT"
Length	0x0000051F (1311)
Revision	0x01 (1)
Checksum	0xFA (250)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00001000 (4096)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)

DefinitionBlock ("SSDT.AML", "SSDT", 0x01, "HP    ", "INSYDE  ", 0x00001000)
{
	Scope(\_SB)
	{
		Device(PTID)
		{
			Name(_HID, 0x0E34D425)
			Name(_CID, EISAID("PNP0C02"))
			Name(IVER, 0x00030000)
			Method(_STA, 0, NotSerialized)
			{
				Return(0x0F)
			}
			Name(TSDL, Package(46)
			{
				Zero, "CPU Core 0 DTS", Zero, "CPU Core 1 DTS", Zero, "CPU Core 2 DTS",
				Zero, "CPU Core 3 DTS", Zero, "CPU Core Package DTS", 0x03, "CPU Core VR (IMVP) Temperature",
				0x03, "CPU GT VR (IMVP) Temperature", 0x03, "Heat Exchanger Fan Temperature",
				0x03, "Skin Temperature", 0x03, "Ambient Temperature", 0x03, "Minicard Region Temperature",
				0x02, "Channel 0 DIMM Temperature", 0x02, "Channel 1 DIMM Temperature",
				Zero, "CPU Package Temperature", 0x05, "PCH DTS Temperature from PCH",
				Zero, "CPU PECI reading", 0x05, "SA DTS Temperature from PCH", 0x02,
				"TS-on-DIMM0 Temperature", 0x02, "TS-on-DIMM1 Temperature", 0x02,
				"TS-on-DIMM2 Temperature", 0x02, "TS-on-DIMM3 Temperature", 0x02,
				"TZ00 _TMP", 0x02, "TZ01 _TMP"
			})
			Name(PSDL, Package(12)
			{
				Zero, "CPU Power", One, "Gfx Core Power", 0x0A, "System Power", Zero,
				"CPU Average Power", One, "Gfx Core Average Power", 0x0A, "System Average Power"
			})
			Name(OSDL, Package(6) {Zero, "CPU Fan Speed", "RPM", Zero, "CPU energy", "RAW"})
			Method(TSDD, 0, NotSerialized)
			{
				Name(TMPV, Package(23)
				{
					0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
					0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
					0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
					0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000
				})
				Store(Add(Multiply(DTS1, 0x0A), 0x0AAC), Index(TMPV, Zero))
				Store(Add(Multiply(DTS2, 0x0A), 0x0AAC), Index(TMPV, One))
				Store(Add(Multiply(DTS3, 0x0A), 0x0AAC), Index(TMPV, 0x02))
				Store(Add(Multiply(DTS4, 0x0A), 0x0AAC), Index(TMPV, 0x03))
				Store(Add(Multiply(PDTS, 0x0A), 0x0AAC), Index(TMPV, 0x04))
				Return(TMPV)
			}
			Method(PSDD, 0, NotSerialized)
			{
				Name(PWRV, Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000})
				Return(PWRV)
			}
			Method(OSDD, 0, NotSerialized)
			{
				Name(OSDV, Package(2) {0x80000000, 0x80000000})
				Return(OSDV)
			}
			Method(SDSP, 0, NotSerialized)
			{
				Return(0x0A)
			}
			Name(PADA, Package(10) {One, Ones, Ones, 0x1A, Ones, Ones, Ones, Ones, Ones, Ones})
			Name(PADD, Package(10) {0x02, 0x6C, 0x68, 0x1A, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65})
			Method(PADT, 0, NotSerialized)
			{
				Return(PADD)
			}
			Method(RPMD, 0, NotSerialized)
			{
				Name(MTMP, Buffer(0x1A){})
				Return(MTMP)
			}
			Method(WPMD, 1, NotSerialized)
			{
				If(LNotEqual(SizeOf(Arg0), 0x1A))
				{
					Return(Ones)
				}
				Return(Zero)
			}
			Method(ISPC, 0, NotSerialized)
			{
				Return(Zero)
			}
			Method(ENPC, 0, NotSerialized)
			{
				Return(Zero)
			}
			Method(RPCS, 0, NotSerialized)
			{
				Return(Zero)
			}
			Method(RPEC, 0, NotSerialized)
			{
				Store(Zero, Local0)
				Return(Local0)
			}
		}
	}
}

Simple Boot Flag Table: 0x9CFE8000

42 4F 4F 54 28 00 00 00 01 EC 48 50 20 20 20 20	BOOT(.....HP    
49 4E 53 59 44 45 20 20 01 00 00 00 4D 53 46 54	INSYDE  ....MSFT
13 00 00 01 44 00 00 00                        	....D...        

Signature	"BOOT"
Length	0x00000028 (40)
Revision	0x01 (1)
Checksum	0xEC (236)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
CMOS Index	0x44 (68)
Reserved	0x00 0x00 0x00 

ASPT Table: 0x9CFE5000

41 53 50 54 34 00 00 00 07 1A 48 50 20 20 20 20	ASPT4.....HP    
49 4E 53 59 44 45 20 20 01 00 00 00 4D 53 46 54	INSYDE  ....MSFT
13 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00	................
00 00 00 00                                    	....            

Signature	"ASPT"
Length	0x00000034 (52)
Revision	0x07 (7)
Checksum	0x1A (26)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000001 (1)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)
Data	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 

Secondary System Description Table: 0x9CFE4000

Signature	"SSDT"
Length	0x0000094E (2382)
Revision	0x01 (1)
Checksum	0xDC (220)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00003000 (12288)
Creator ID	"INTL"
Creator Revision	0x20100806 (537921542)

DefinitionBlock ("SSDT.AML", "SSDT", 0x01, "HP    ", "INSYDE  ", 0x00003000)
{
	Scope(\_PR.CPU0)
	{
		Name(_PPC, Zero)
		Method(_PCT, 0, NotSerialized)
		{
			If(LAnd(And(CFGD, One), And(PDC0, One)))
			{
				Return(Package(2)
				{
					ResourceTemplate()
					{
						Register(FFixedHW, 0x00, 0x00, 0x0000000000000000)
					}, 
					ResourceTemplate()
					{
						Register(FFixedHW, 0x00, 0x00, 0x0000000000000000)
					}
				})
			}
			Return(Package(2)
			{
				ResourceTemplate()
				{
					Register(SystemIO, 0x10, 0x00, 0x0000000000001000)
				}, 
				ResourceTemplate()
				{
					Register(SystemIO, 0x08, 0x00, 0x00000000000000B3)
				}
			})
		}
		Method(XPSS, 0, NotSerialized)
		{
			If(And(PDC0, One))
			{
				Return(NPSS)
			}
			Return(SPSS)
		}
		Name(SPSS, Package(15)
		{
			Package(6) {0x00000899, 0x0000AFC8, 0x0000006E, 0x0000000A, 0x00000083, 0x00000000}, 
			Package(6) {0x00000898, 0x0000AFC8, 0x0000006E, 0x0000000A, 0x00000183, 0x00000001}, 
			Package(6) {0x000007D0, 0x00009A9D, 0x0000006E, 0x0000000A, 0x00000283, 0x00000002}, 
			Package(6) {0x0000076C, 0x0000920B, 0x0000006E, 0x0000000A, 0x00000383, 0x00000003}, 
			Package(6) {0x00000708, 0x000087F6, 0x0000006E, 0x0000000A, 0x00000483, 0x00000004}, 
			Package(6) {0x000006A4, 0x00007FBF, 0x0000006E, 0x0000000A, 0x00000583, 0x00000005}, 
			Package(6) {0x00000640, 0x00007613, 0x0000006E, 0x0000000A, 0x00000683, 0x00000006}, 
			Package(6) {0x000005DC, 0x00006E34, 0x0000006E, 0x0000000A, 0x00000783, 0x00000007}, 
			Package(6) {0x00000578, 0x000064E4, 0x0000006E, 0x0000000A, 0x00000883, 0x00000008}, 
			Package(6) {0x00000514, 0x00005D5C, 0x0000006E, 0x0000000A, 0x00000983, 0x00000009}, 
			Package(6) {0x000004B0, 0x0000546D, 0x0000006E, 0x0000000A, 0x00000A83, 0x0000000A}, 
			Package(6) {0x0000044C, 0x00004D3F, 0x0000006E, 0x0000000A, 0x00000B83, 0x0000000B}, 
			Package(6) {0x000003E8, 0x000044AE, 0x0000006E, 0x0000000A, 0x00000C83, 0x0000000C}, 
			Package(6) {0x00000384, 0x00003C4D, 0x0000006E, 0x0000000A, 0x00000D83, 0x0000000D}, 
			Package(6) {0x00000320, 0x0000359B, 0x0000006E, 0x0000000A, 0x00000E83, 0x0000000E}
		})
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Name(_PSS, Package(15)
		{
			Package(6) {0x00000899, 0x0000AFC8, 0x0000000A, 0x0000000A, 0x00002100, 0x00002100}, 
			Package(6) {0x00000898, 0x0000AFC8, 0x0000000A, 0x0000000A, 0x00001600, 0x00001600}, 
			Package(6) {0x000007D0, 0x00009A9D, 0x0000000A, 0x0000000A, 0x00001400, 0x00001400}, 
			Package(6) {0x0000076C, 0x0000920B, 0x0000000A, 0x0000000A, 0x00001300, 0x00001300}, 
			Package(6) {0x00000708, 0x000087F6, 0x0000000A, 0x0000000A, 0x00001200, 0x00001200}, 
			Package(6) {0x000006A4, 0x00007FBF, 0x0000000A, 0x0000000A, 0x00001100, 0x00001100}, 
			Package(6) {0x00000640, 0x00007613, 0x0000000A, 0x0000000A, 0x00001000, 0x00001000}, 
			Package(6) {0x000005DC, 0x00006E34, 0x0000000A, 0x0000000A, 0x00000F00, 0x00000F00}, 
			Package(6) {0x00000578, 0x000064E4, 0x0000000A, 0x0000000A, 0x00000E00, 0x00000E00}, 
			Package(6) {0x00000514, 0x00005D5C, 0x0000000A, 0x0000000A, 0x00000D00, 0x00000D00}, 
			Package(6) {0x000004B0, 0x0000546D, 0x0000000A, 0x0000000A, 0x00000C00, 0x00000C00}, 
			Package(6) {0x0000044C, 0x00004D3F, 0x0000000A, 0x0000000A, 0x00000B00, 0x00000B00}, 
			Package(6) {0x000003E8, 0x000044AE, 0x0000000A, 0x0000000A, 0x00000A00, 0x00000A00}, 
			Package(6) {0x00000384, 0x00003C4D, 0x0000000A, 0x0000000A, 0x00000900, 0x00000900}, 
			Package(6) {0x00000320, 0x0000359B, 0x0000000A, 0x0000000A, 0x00000800, 0x00000800}
		})
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Package(6) {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
		Name(PSDF, Zero)
		Method(_PSD, 0, NotSerialized)
		{
			If(LNot(PSDF))
			{
				Store(TCNT, Index(DerefOf(Index(HPSD, Zero)), 0x04))
				Store(TCNT, Index(DerefOf(Index(SPSD, Zero)), 0x04))
				Store(Ones, PSDF)
			}
			If(And(PDC0, 0x0800))
			{
				Return(HPSD)
			}
			Return(SPSD)
		}
		Name(HPSD, Package(1)
		{
			Package(5) {0x05, Zero, Zero, 0xFE, 0x80}
		})
		Name(SPSD, Package(1)
		{
			Package(5) {0x05, Zero, Zero, 0xFC, 0x80}
		})
	}
}

Secondary System Description Table: 0x9CFE3000

Signature	"SSDT"
Length	0x00000996 (2454)
Revision	0x01 (1)
Checksum	0x58 (88)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00003000 (12288)
Creator ID	"INTL"
Creator Revision	0x20100806 (537921542)

DefinitionBlock ("SSDT.AML", "SSDT", 0x01, "HP    ", "INSYDE  ", 0x00003000)
{
	Scope(\)
	{
		Name(SSDT, Package(12)
		{
			"CPU0IST ", 0x9AF2D018, 0x0000094E, "APIST   ", 0x9CE71A98, 0x00000303,
			"CPU0CST ", 0x9CE70798, 0x00000727, "APCST   ", 0x9CE6FD98, 0x00000119
		})
		Name(CFGD, 0x007EFEFF)
		Name(\PDC0, 0x80000000)
		Name(\PDC1, 0x80000000)
		Name(\PDC2, 0x80000000)
		Name(\PDC3, 0x80000000)
		Name(\PDC4, 0x80000000)
		Name(\PDC5, 0x80000000)
		Name(\PDC6, 0x80000000)
		Name(\PDC7, 0x80000000)
		Name(\SDTL, Zero)
	}
	Scope(\_PR.CPU0)
	{
		Name(HI0, Zero)
		Name(HC0, Zero)
		Method(_PDC, 1, NotSerialized)
		{
			Store(CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(CPDC, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, REVS)
			CreateDWordField(Arg0, 0x04, SIZE)
			Store(SizeOf(Arg0), Local0)
			Store(Subtract(Local0, 0x08), Local1)
			CreateField(Arg0,0x40,Multiply(Local1, 0x08),TEMP)
			Name(STS0, Buffer(0x04)
			{
				0x00, 0x00, 0x00, 0x00
			})
			Concatenate(STS0, TEMP, Local2)
			Return(COSC(Buffer(0x10)
			{
				0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
				0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
			}, REVS, SIZE, Local2))
		}
		Method(COSC, 4, NotSerialized)
		{
			CreateDWordField(Arg3, Zero, STS0)
			CreateDWordField(Arg3, 0x04, CAP0)
			CreateDWordField(Arg0, Zero, IID0)
			CreateDWordField(Arg0, 0x04, IID1)
			CreateDWordField(Arg0, 0x08, IID2)
			CreateDWordField(Arg0, 0x0C, IID3)
			Name(UID0, Buffer(0x10)
			{
				0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
				0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
			})
			CreateDWordField(UID0, Zero, EID0)
			CreateDWordField(UID0, 0x04, EID1)
			CreateDWordField(UID0, 0x08, EID2)
			CreateDWordField(UID0, 0x0C, EID3)
			If(LNot(LAnd(LAnd(LEqual(IID0, EID0), LEqual(IID1, EID1)), LAnd(LEqual(IID2, EID2), LEqual(IID3, EID3)))))
			{
				Store(0x06, STS0)
				Return(Arg3)
			}
			If(LNotEqual(Arg1, One))
			{
				Store(0x0A, STS0)
				Return(Arg3)
			}
			Return(Arg3)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS0)
			CreateDWordField(Arg0, 0x04, CAP0)
			If(LOr(LEqual(STS0, 0x06), LEqual(STS0, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS0, One))
			{
				And(CAP0, 0x0BFF, CAP0)
				Return(Zero)
			}
			Or(And(PDC0, 0x7FFFFFFF), CAP0, PDC0)
			If(And(CFGD, 0x3E))
			{
				If(LAnd(LAnd(And(CFGD, 0x0400), And(PDC0, 0x18)), LNot(And(SDTL, 0x02))))
				{
					Or(SDTL, 0x02, SDTL)
					OperationRegion(CST0, SystemMemory, DerefOf(Index(SSDT, 0x07)), DerefOf(Index(SSDT, 0x08)))
					Load(CST0, HC0)
				}
			}
			Return(Zero)
		}
	}
	Scope(\_PR.CPU1)
	{
		Name(HI1, Zero)
		Name(HC1, Zero)
		Method(_PDC, 1, NotSerialized)
		{
			Store(\_PR.CPU0.CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(\_PR.CPU0.COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS1)
			CreateDWordField(Arg0, 0x04, CAP1)
			If(LOr(LEqual(STS1, 0x06), LEqual(STS1, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS1, One))
			{
				And(CAP1, 0x0BFF, CAP1)
				Return(Zero)
			}
			Or(And(PDC1, 0x7FFFFFFF), CAP1, PDC1)
			If(LEqual(And(PDC0, 0x09), 0x09))
			{
				APPT()
			}
			If(And(PDC0, 0x18))
			{
				APCT()
			}
			Return(Zero)
		}
		Method(APCT, 0, NotSerialized)
		{
			If(LAnd(And(CFGD, 0x2E), LNot(And(SDTL, 0x20))))
			{
				Or(SDTL, 0x20, SDTL)
				OperationRegion(CST1, SystemMemory, DerefOf(Index(SSDT, 0x0A)), DerefOf(Index(SSDT, 0x0B)))
				Load(CST1, HC1)
			}
		}
		Method(APPT, 0, NotSerialized)
		{
			If(LAnd(And(CFGD, One), LNot(And(SDTL, 0x10))))
			{
				Or(SDTL, 0x10, SDTL)
				OperationRegion(IST1, SystemMemory, DerefOf(Index(SSDT, 0x04)), DerefOf(Index(SSDT, 0x05)))
				Load(IST1, HI1)
			}
		}
	}
	Scope(\_PR.CPU2)
	{
		Method(_PDC, 1, NotSerialized)
		{
			Store(\_PR.CPU0.CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(\_PR.CPU0.COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS2)
			CreateDWordField(Arg0, 0x04, CAP2)
			If(LOr(LEqual(STS2, 0x06), LEqual(STS2, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS2, One))
			{
				And(CAP2, 0x0BFF, CAP2)
				Return(Zero)
			}
			Or(And(PDC2, 0x7FFFFFFF), CAP2, PDC2)
			If(LEqual(And(PDC2, 0x09), 0x09))
			{
				\_PR.CPU1.APPT()
			}
			If(And(PDC2, 0x18))
			{
				\_PR.CPU1.APCT()
			}
			Return(Zero)
		}
	}
	Scope(\_PR.CPU3)
	{
		Method(_PDC, 1, NotSerialized)
		{
			Store(\_PR.CPU0.CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(\_PR.CPU0.COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS3)
			CreateDWordField(Arg0, 0x04, CAP3)
			If(LOr(LEqual(STS3, 0x06), LEqual(STS3, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS3, One))
			{
				And(CAP3, 0x0BFF, CAP3)
				Return(Zero)
			}
			Or(And(PDC3, 0x7FFFFFFF), CAP3, PDC3)
			If(LEqual(And(PDC3, 0x09), 0x09))
			{
				\_PR.CPU1.APPT()
			}
			If(And(PDC3, 0x18))
			{
				\_PR.CPU1.APCT()
			}
			Return(Zero)
		}
	}
	Scope(\_PR.CPU4)
	{
		Method(_PDC, 1, NotSerialized)
		{
			Store(\_PR.CPU0.CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(\_PR.CPU0.COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS4)
			CreateDWordField(Arg0, 0x04, CAP4)
			If(LOr(LEqual(STS4, 0x06), LEqual(STS4, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS4, One))
			{
				And(CAP4, 0x0BFF, CAP4)
				Return(Zero)
			}
			Or(And(PDC4, 0x7FFFFFFF), CAP4, PDC4)
			If(LEqual(And(PDC4, 0x09), 0x09))
			{
				\_PR.CPU1.APPT()
			}
			If(And(PDC4, 0x18))
			{
				\_PR.CPU1.APCT()
			}
			Return(Zero)
		}
	}
	Scope(\_PR.CPU5)
	{
		Method(_PDC, 1, NotSerialized)
		{
			Store(\_PR.CPU0.CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(\_PR.CPU0.COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS5)
			CreateDWordField(Arg0, 0x04, CAP5)
			If(LOr(LEqual(STS5, 0x06), LEqual(STS5, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS5, One))
			{
				And(CAP5, 0x0BFF, CAP5)
				Return(Zero)
			}
			Or(And(PDC5, 0x7FFFFFFF), CAP5, PDC5)
			If(LEqual(And(PDC5, 0x09), 0x09))
			{
				\_PR.CPU1.APPT()
			}
			If(And(PDC5, 0x18))
			{
				\_PR.CPU1.APCT()
			}
			Return(Zero)
		}
	}
	Scope(\_PR.CPU6)
	{
		Method(_PDC, 1, NotSerialized)
		{
			Store(\_PR.CPU0.CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(\_PR.CPU0.COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS6)
			CreateDWordField(Arg0, 0x04, CAP6)
			If(LOr(LEqual(STS6, 0x06), LEqual(STS6, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS6, One))
			{
				And(CAP6, 0x0BFF, CAP6)
				Return(Zero)
			}
			Or(And(PDC6, 0x7FFFFFFF), CAP6, PDC6)
			If(LEqual(And(PDC6, 0x09), 0x09))
			{
				\_PR.CPU1.APPT()
			}
			If(And(PDC6, 0x18))
			{
				\_PR.CPU1.APCT()
			}
			Return(Zero)
		}
	}
	Scope(\_PR.CPU7)
	{
		Method(_PDC, 1, NotSerialized)
		{
			Store(\_PR.CPU0.CPDC(Arg0), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(_OSC, 4, NotSerialized)
		{
			Store(\_PR.CPU0.COSC(Arg0, Arg1, Arg2, Arg3), Local0)
			GCAP(Local0)
			Return(Local0)
		}
		Method(GCAP, 1, NotSerialized)
		{
			CreateDWordField(Arg0, Zero, STS7)
			CreateDWordField(Arg0, 0x04, CAP7)
			If(LOr(LEqual(STS7, 0x06), LEqual(STS7, 0x0A)))
			{
				Return(Zero)
			}
			If(And(STS7, One))
			{
				And(CAP7, 0x0BFF, CAP7)
				Return(Zero)
			}
			Or(And(PDC7, 0x7FFFFFFF), CAP7, PDC7)
			If(LEqual(And(PDC7, 0x09), 0x09))
			{
				\_PR.CPU1.APPT()
			}
			If(And(PDC7, 0x18))
			{
				\_PR.CPU1.APCT()
			}
			Return(Zero)
		}
	}
}

Secondary System Description Table: 0x9CFE2000

Signature	"SSDT"
Length	0x000002DA (730)
Revision	0x01 (1)
Checksum	0xFE (254)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00003000 (12288)
Creator ID	"INTL"
Creator Revision	0x20100806 (537921542)

DefinitionBlock ("SSDT.AML", "SSDT", 0x01, "HP    ", "INSYDE  ", 0x00003000)
{
	Scope(\_PR.CPU0)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			If(And(PDC0, 0x04))
			{
				Return(Package(2)
				{
					ResourceTemplate()
					{
						Register(FFixedHW, 0x00, 0x00, 0x0000000000000000)
					}, 
					ResourceTemplate()
					{
						Register(FFixedHW, 0x00, 0x00, 0x0000000000000000)
					}
				})
			}
			Return(Package(2)
			{
				ResourceTemplate()
				{
					Register(SystemIO, 0x05, 0x00, 0x0000000000000410)
				}, 
				ResourceTemplate()
				{
					Register(SystemIO, 0x05, 0x00, 0x0000000000000410)
				}
			})
		}
		Name(TSMF, Package(15)
		{
			Package(5) {0x64, 0x03E8, Zero, Zero, Zero}, 
			Package(5) {0x5E, 0x03AC, Zero, 0x1F, Zero}, 
			Package(5) {0x58, 0x0370, Zero, 0x1E, Zero}, 
			Package(5) {0x52, 0x0334, Zero, 0x1D, Zero}, 
			Package(5) {0x4B, 0x02F8, Zero, 0x1C, Zero}, 
			Package(5) {0x45, 0x02BC, Zero, 0x1B, Zero}, 
			Package(5) {0x3F, 0x0280, Zero, 0x1A, Zero}, 
			Package(5) {0x39, 0x0244, Zero, 0x19, Zero}, 
			Package(5) {0x32, 0x0208, Zero, 0x18, Zero}, 
			Package(5) {0x2C, 0x01CC, Zero, 0x17, Zero}, 
			Package(5) {0x26, 0x0190, Zero, 0x16, Zero}, 
			Package(5) {0x20, 0x0154, Zero, 0x15, Zero}, 
			Package(5) {0x19, 0x0118, Zero, 0x14, Zero}, 
			Package(5) {0x13, 0xDC, Zero, 0x13, Zero}, 
			Package(5) {0x0D, 0xA0, Zero, 0x12, Zero}
		})
		Name(TSMC, Package(8)
		{
			Package(5) {0x64, 0x03E8, Zero, Zero, Zero}, 
			Package(5) {0x58, 0x036B, Zero, 0x1E, Zero}, 
			Package(5) {0x4B, 0x02EE, Zero, 0x1C, Zero}, 
			Package(5) {0x3F, 0x0271, Zero, 0x1A, Zero}, 
			Package(5) {0x32, 0x01F4, Zero, 0x18, Zero}, 
			Package(5) {0x26, 0x0177, Zero, 0x16, Zero}, 
			Package(5) {0x19, 0xFA, Zero, 0x14, Zero}, 
			Package(5) {0x0D, 0x7D, Zero, 0x12, Zero}
		})
		Name(TSSF, Zero)
		Mutex(TSMO, 0)
		Method(_TSS, 0, NotSerialized)
		{
			If(LAnd(LNot(TSSF), CondRefOf(_PSS)))
			{
				Acquire(TSMO, 0xFFFF)
				If(LAnd(LNot(TSSF), CondRefOf(_PSS)))
				{
					Name(LFMI, Zero)
					Store(SizeOf(_PSS), LFMI)
					Decrement(LFMI)
					Name(LFMP, Zero)
					Store(DerefOf(Index(DerefOf(Index(_PSS, LFMI)), One)), LFMP)
					Store(Zero, Local0)
					If(And(CFGD, 0x00080000))
					{
						Store(RefOf(TSMF), Local1)
						Store(SizeOf(TSMF), Local2)
					}
					Else
					{
						Store(RefOf(TSMC), Local1)
						Store(SizeOf(TSMC), Local2)
					}
					While(LLess(Local0, Local2))
					{
						Store(Divide(Multiply(LFMP, Subtract(Local2, Local0)), Local2, , ), Local4)
						Store(Local4, Index(DerefOf(Index(DerefOf(Local1), Local0)), One))
						Increment(Local0)
					}
					Store(Ones, TSSF)
				}
				Release(TSMO)
			}
			If(And(CFGD, 0x00080000))
			{
				Return(TSMF)
			}
			Else
			{
				Return(TSMC)
			}
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, Zero, 0xFC, TCNT}
			})
		}
	}
}

Secondary System Description Table: 0x9CFE1000

Signature	"SSDT"
Length	0x0000035D (861)
Revision	0x01 (1)
Checksum	0x0A (10)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00003000 (12288)
Creator ID	"INTL"
Creator Revision	0x20100806 (537921542)

DefinitionBlock ("SSDT.AML", "SSDT", 0x01, "HP    ", "INSYDE  ", 0x00003000)
{
	Scope(\_PR.CPU1)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			Return(\_PR.CPU0._PTC)
		}
		Method(_TSS, 0, NotSerialized)
		{
			Return(\_PR.CPU0._TSS)
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, One, 0xFC, TCNT}
			})
		}
	}
	Scope(\_PR.CPU2)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			Return(\_PR.CPU0._PTC)
		}
		Method(_TSS, 0, NotSerialized)
		{
			Return(\_PR.CPU0._TSS)
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, 0x02, 0xFC, TCNT}
			})
		}
	}
	Scope(\_PR.CPU3)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			Return(\_PR.CPU0._PTC)
		}
		Method(_TSS, 0, NotSerialized)
		{
			Return(\_PR.CPU0._TSS)
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, 0x03, 0xFC, TCNT}
			})
		}
	}
	Scope(\_PR.CPU4)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			Return(\_PR.CPU0._PTC)
		}
		Method(_TSS, 0, NotSerialized)
		{
			Return(\_PR.CPU0._TSS)
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, 0x04, 0xFC, TCNT}
			})
		}
	}
	Scope(\_PR.CPU5)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			Return(\_PR.CPU0._PTC)
		}
		Method(_TSS, 0, NotSerialized)
		{
			Return(\_PR.CPU0._TSS)
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, 0x05, 0xFC, TCNT}
			})
		}
	}
	Scope(\_PR.CPU6)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			Return(\_PR.CPU0._PTC)
		}
		Method(_TSS, 0, NotSerialized)
		{
			Return(\_PR.CPU0._TSS)
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, 0x06, 0xFC, TCNT}
			})
		}
	}
	Scope(\_PR.CPU7)
	{
		Name(_TPC, Zero)
		Method(_PTC, 0, NotSerialized)
		{
			Return(\_PR.CPU0._PTC)
		}
		Method(_TSS, 0, NotSerialized)
		{
			Return(\_PR.CPU0._TSS)
		}
		Method(_TSD, 0, NotSerialized)
		{
			If(LNot(And(PDC0, 0x04)))
			{
				Return(Package(1)
				{
					Package(5) {0x05, Zero, Zero, 0xFD, TCNT}
				})
			}
			Return(Package(1)
			{
				Package(5) {0x05, Zero, 0x07, 0xFC, TCNT}
			})
		}
	}
}

DMA Remapping Reporting Table: 0x9CFE0000

44 4D 41 52 E8 00 00 00 01 29 48 50 20 20 20 20	DMAR.....)HP    
49 4E 53 59 44 45 20 20 01 00 00 00 49 4E 54 4C	INSYDE  ....INTL
01 00 00 00 23 01 00 00 00 00 00 00 00 00 00 00	....#...........
00 00 18 00 00 00 00 00 00 00 D9 FE 00 00 00 00	................
01 08 00 00 00 00 02 00 00 00 58 00 01 00 00 00	..........X.....
00 10 D9 FE 00 00 00 00 03 08 00 00 00 F0 1F 00	................
04 08 00 00 00 F0 0F 00 04 08 00 00 00 F0 0F 01	................
04 08 00 00 00 F0 0F 02 04 08 00 00 00 F0 0F 03	................
04 08 00 00 00 F0 0F 04 04 08 00 00 00 F0 0F 05	................
04 08 00 00 00 F0 0F 06 04 08 00 00 00 F0 0F 07	................
01 00 28 00 00 00 00 00 00 C0 E9 9C 00 00 00 00	..(.............
FF BF EB 9C 00 00 00 00 01 08 00 00 00 00 1D 00	................
01 08 00 00 00 00 1A 00 01 00 20 00 00 00 00 00	.......... .....
00 00 80 9D 00 00 00 00 FF FF 9F 9F 00 00 00 00	................
01 08 00 00 00 00 02 00                        	........        

Signature	"DMAR"
Length	0x000000E8 (232)
Revision	0x01 (1)
Checksum	0x29 (41)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000001 (1)
Creator ID	"INTL"
Creator Revision	0x00000001 (1)
Host Address Width	0x23 (36Bits)
Reserved	0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
DMA Remapping Hardware Unit Definition Structure
  Type	0x0000 (0)
  Length	0x0018 (24)
  Flags	0x00 (0)
  Reserved	0x00 0x00 0x00 
  Register Base Address	0x00000000FED90000
  Device Scope Entry
    Type	0x01 (1)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0x0000 0x0002 
DMA Remapping Hardware Unit Definition Structure
  Type	0x0000 (0)
  Length	0x0058 (88)
  Flags	0x01 (1)
  Reserved	0x00 0x00 0x00 
  Register Base Address	0x00000000FED91000
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
  Device Scope Entry
    Type	0x03 (3)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0xF000 0x001F 
DMA Remapping Hardware Unit Definition Structure
  Type	0x0001 (1)
  Length	0x0028 (40)
  Flags	0x00 (0)
  Reserved	0x00 0x00 0x00 
  Region Base Address	0x000000009CE9C000
  Region Limit Address	0x000000009CEBBFFF
  Device Scope Entry
    Type	0x01 (1)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0x0000 0x001D 
  Device Scope Entry
    Type	0x01 (1)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0x0000 0x001D 
DMA Remapping Hardware Unit Definition Structure
  Type	0x0001 (1)
  Length	0x0020 (32)
  Flags	0x00 (0)
  Reserved	0x00 0x00 0x00 
  Region Base Address	0x000000009D800000
  Region Limit Address	0x000000009F9FFFFF
  Device Scope Entry
    Type	0x01 (1)
    Length	0x08 (8)
    Segment Number	0x00 (0)
    Starting Bus Number	0x00 (0)
    PCI Path	0x0000 0x0002 

Secondary System Description Table: 0x9CFDA000

Signature	"SSDT"
Length	0x000024A1 (9377)
Revision	0x01 (1)
Checksum	0xF3 (243)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00001000 (4096)
Creator ID	"INTL"
Creator Revision	0x20100806 (537921542)

DefinitionBlock ("SSDT.AML", "SSDT", 0x01, "HP    ", "INSYDE  ", 0x00001000)
{
	Scope(\_SB.PCI0.PEG0.PEGP)
	{
		OperationRegion(SGOP, SystemMemory, 0x9CFBEE18, 0x0000004B)
		Field(SGOP, AnyAcc, Lock, Preserve)
		{
			EBAS, 32,
			CPSP, 32,
			EECP, 32,
			EVCP, 32,
			XBAS, 32,
			SGMD, 8,
			SGFL, 8,
			PWOK, 8,
			HLRS, 8,
			DSEL, 8,
			ESEL, 8,
			PSEL, 8,
			PWEN, 8,
			PRST, 8,
			MXD1, 32,
			MXD2, 32,
			MXD3, 32,
			MXD4, 32,
			MXD5, 32,
			MXD6, 32,
			MXD7, 32,
			MXD8, 32,
			GBAS, 16,
			APDT, 32,
			AHDT, 32,
			IHDT, 32,
		}
	}
	Scope(\_SB.PCI0.PEG0.PEGP)
	{
		OperationRegion(AOPR, SystemMemory, 0x9CF53018, 0x00010036)
		Field(AOPR, AnyAcc, Lock, Preserve)
		{
			RVBS, 32,
			NTLE, 16,
			TLE1, 16,
			TLE2, 16,
			TLE3, 16,
			TLE4, 16,
			TLE5, 16,
			TLE6, 16,
			TLE7, 16,
			TLE8, 16,
			TLE9, 16,
			TL10, 16,
			TL11, 16,
			TL12, 16,
			TL13, 16,
			TL14, 16,
			TL15, 16,
			TGXA, 16,
			AGXA, 16,
			GSTP, 8,
			DSWR, 8,
			EMDR, 8,
			PXGS, 8,
			CACD, 16,
			CCND, 16,
			NACD, 16,
			EXPM, 8,
			TLSN, 8,
			PXDY, 8,
			PXFD, 8,
			RBF1, 262144,
			RBF2, 262144,
		}
	}
	Scope(\_SB.PCI0.GFX0)
	{
		Method(MXVL, 1, Serialized)
		{
			Name(TMP0, Buffer(0x04)
			{
				0x00
			})
			CreateByteField(TMP0,Zero,DTYP)
			CreateByteField(TMP0,One,DDSP)
			CreateByteField(TMP0,0x02,DAUX)
			CreateByteField(TMP0,0x03,DHPD)
			Store(Arg0, DTYP)
			ShiftRight(Arg0, 0x08, DDSP)
			ShiftRight(Arg0, 0x10, DAUX)
			ShiftRight(Arg0, 0x18, DHPD)
			Return(TMP0)
		}
		Method(_DSM, 4, Serialized)
		{
			If(LEqual(Arg0, ToUUID("7ED873D3-C2D04E4F-A8540F1317B01C2C")}))
			{
				If(LEqual(Arg2, Zero))
				{
					Name(DRET, Buffer(0x04)
					{
						0x00
					})
					CreateWordField(DRET, Zero, F0SS)
					CreateByteField(DRET,0x03,TPVE)
					Store(One, F0SS)
					If(LEqual(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x0F), One))
					{
						Store(0x03, F0SS)
					}
					Else
					{
						Store(One, F0SS)
					}
					If(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x80))
					{
						Store(0x80, TPVE)
					}
					Return(DRET)
				}
				If(LEqual(Arg2, One))
				{
					Name(MXIF, Package(10)
					{
						Zero, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}, 
						Package(2)
						{
							Zero, 
							Buffer(0x04)
							{
								0x00
							}
						}
					})
					Store(NDID, Index(MXIF, Zero))
					Store(DID1, Index(DerefOf(Index(MXIF, One)), Zero))
					Store(DID2, Index(DerefOf(Index(MXIF, 0x02)), Zero))
					Store(DID3, Index(DerefOf(Index(MXIF, 0x03)), Zero))
					Store(DID4, Index(DerefOf(Index(MXIF, 0x04)), Zero))
					Store(DID5, Index(DerefOf(Index(MXIF, 0x05)), Zero))
					Store(DID6, Index(DerefOf(Index(MXIF, 0x06)), Zero))
					Store(DID7, Index(DerefOf(Index(MXIF, 0x07)), Zero))
					Store(DID8, Index(DerefOf(Index(MXIF, 0x08)), Zero))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD1), Index(DerefOf(Index(MXIF, One)), One))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD2), Index(DerefOf(Index(MXIF, 0x02)), One))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD3), Index(DerefOf(Index(MXIF, 0x03)), One))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD4), Index(DerefOf(Index(MXIF, 0x04)), One))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD5), Index(DerefOf(Index(MXIF, 0x05)), One))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD6), Index(DerefOf(Index(MXIF, 0x06)), One))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD7), Index(DerefOf(Index(MXIF, 0x07)), One))
					Store(MXVL(\_SB.PCI0.PEG0.PEGP.MXD8), Index(DerefOf(Index(MXIF, 0x08)), One))
					If(And(\_SB.PCI0.PEG0.PEGP.SGFL, One))
					{
						Store(0x80010306, Index(DerefOf(Index(MXIF, NDID)), Zero))
						Store(MXVL(0x0101010E), Index(DerefOf(Index(MXIF, NDID)), One))
					}
					Return(MXIF)
				}
			}
			If(CondRefOf(\_SB.PCI0.GFX0.HDSM))
			{
				Return(\_SB.PCI0.GFX0.HDSM)
				Arg0
				Arg1
				Arg2
				Arg3
			}
			Return(One)
		}
		Method(IDAB, 0, Serialized)
		{
			If(LEqual(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x0F), One))
			{
				If(LEqual(\_SB.PCI0.PEG0.PEGP.SGFL, One))
				{
					WIID()
				}
			}
			Else
			{
				Store(Zero, NDID)
				If(LNotEqual(DIDL, Zero))
				{
					Store(SDDL, DIDL)
					DID1
				}
				If(LNotEqual(DDL2, Zero))
				{
					Store(SDDL, DDL2)
					DID2
				}
				If(LNotEqual(DDL3, Zero))
				{
					Store(SDDL, DDL3)
					DID3
				}
				If(LNotEqual(DDL4, Zero))
				{
					Store(SDDL, DDL4)
					DID4
				}
				If(LNotEqual(DDL5, Zero))
				{
					Store(SDDL, DDL5)
					DID5
				}
				If(LNotEqual(DDL6, Zero))
				{
					Store(SDDL, DDL6)
					DID6
				}
				If(LNotEqual(DDL7, Zero))
				{
					Store(SDDL, DDL7)
					DID7
				}
				If(LNotEqual(DDL8, Zero))
				{
					Store(SDDL, DDL8)
					DID8
				}
			}
			Return(Zero)
		}
		Method(HWID, 0, Serialized)
		{
			Name(TMP9, Package(9) {Ones, Ones, Ones, Ones, Ones, Ones, Ones, Ones, Ones})
			Store(Or(0x00010000, DID1), Index(TMP9, Zero))
			Store(Or(0x00010000, DID2), Index(TMP9, One))
			Store(Or(0x00010000, DID3), Index(TMP9, 0x02))
			Store(Or(0x00010000, DID4), Index(TMP9, 0x03))
			Store(Or(0x00010000, DID5), Index(TMP9, 0x04))
			Store(Or(0x00010000, DID6), Index(TMP9, 0x05))
			Store(Or(0x00010000, DID7), Index(TMP9, 0x06))
			Store(Or(0x00010000, DID8), Index(TMP9, 0x07))
			Store(Zero, Index(TMP9, 0x08))
			If(And(\_SB.PCI0.PEG0.PEGP.SGFL, One))
			{
				Store(0x80010306, Index(TMP9, 0x08))
			}
			Return(TMP9)
		}
		Method(WIID, 0, Serialized)
		{
			Name(_T_0, Zero)
			If(LEqual(And(DIDL, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			If(LEqual(And(DID2, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			If(LEqual(And(DID3, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			If(LEqual(And(DID4, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			If(LEqual(And(DID5, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			If(LEqual(And(DID6, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			If(LEqual(And(DID7, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			If(LEqual(And(DID8, 0x0F0F), 0x0306))
			{
				Return(Zero)
			}
			While(One)
			{
				Store(NDID, _T_0)
				If(LEqual(_T_0, One))
				{
					Store(0x80010306, DID2)
					Store(0x02, NDID)
				}
				Else
				{
					If(LEqual(_T_0, 0x02))
					{
						Store(0x80010306, DID3)
						Store(0x03, NDID)
					}
					Else
					{
						If(LEqual(_T_0, 0x03))
						{
							Store(0x80010306, DID4)
							Store(0x04, NDID)
						}
						Else
						{
							If(LEqual(_T_0, 0x04))
							{
								Store(0x80010306, DID5)
								Store(0x05, NDID)
							}
							Else
							{
								If(LEqual(_T_0, 0x05))
								{
									Store(0x80010306, DID6)
									Store(0x06, NDID)
								}
								Else
								{
									If(LEqual(_T_0, 0x06))
									{
										Store(0x80010306, DID7)
										Store(0x07, NDID)
									}
									Else
									{
										If(LEqual(_T_0, 0x07))
										{
											Store(0x80010306, DID8)
											Store(0x08, NDID)
										}
										Else
										{
											If(LEqual(_T_0, 0x08))
											{
												Store(0x09, NDID)
											}
										}
									}
								}
							}
						}
					}
				}
				Break
			}
			Return(Zero)
		}
	}
	Scope(\_SB.PCI0.PEG0)
	{
		OperationRegion(RPCI, PCI_Config, Zero, 0xF0)
		Field(RPCI, DWordAcc, Lock, Preserve)
		{
			Offset(0xB0),	//Offset(176),
			ASPM, 2,
			, 2,
			LNKD, 1,
		}
		OperationRegion(RPCX, SystemMemory, \_SB.PCI0.PEG0.PEGP.XBAS, 0x8400)
		Field(RPCX, DWordAcc, NoLock, Preserve)
		{
			Offset(0x8214),	//Offset(33300),
			Offset(0x8216),	//Offset(33302),
			LNKS, 4,
		}
		Device(PEGA)
		{
			Name(_ADR, One)
			Name(_PRW, Package(2) {0x09, 0x04})
			OperationRegion(ACAP, PCI_Config, \_SB.PCI0.PEG0.PEGP.EECP, 0x14)
			Field(ACAP, DWordAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				LCT1, 16,
			}
		}
	}
	Scope(\_SB.PCI0.PEG0.PEGP)
	{
		Name(ELCT, Zero)
		Name(HVID, Zero)
		Name(HDID, Zero)
		OperationRegion(PCIS, PCI_Config, Zero, 0x0100)
		Field(PCIS, DWordAcc, Lock, Preserve)
		{
			DVID, 16,
			Offset(0x2C),	//Offset(44),
			SVID, 16,
			SDID, 16,
			Offset(0x4C),	//Offset(76),
			WVID, 16,
			WDID, 16,
		}
		Field(PCIS, ByteAcc, NoLock, Preserve)
		{
			Offset(0x4),	//Offset(4),
			CMDR, 8,
			VGAR, 2008,
		}
		Name(VGAB, Buffer(0xFB)
		{
			0x00
		})
		OperationRegion(GPIO, SystemIO, GBAS, 0x60)
		Field(GPIO, ByteAcc, Lock, Preserve)
		{
			Offset(0xC),	//Offset(12),
			LVL0, 32,
			Offset(0x38),	//Offset(56),
			LVL1, 32,
			Offset(0x48),	//Offset(72),
			LVL2, 32,
		}
		OperationRegion(PCAP, PCI_Config, EECP, 0x14)
		Field(PCAP, DWordAcc, NoLock, Preserve)
		{
			Offset(0x10),	//Offset(16),
			LCTL, 16,
		}
		Method(_INI, 0, NotSerialized)
		{
			Store(Zero, \_SB.PCI0.PEG0.PEGP._ADR)
		}
		Method(_ON, 0, Serialized)
		{
			GLSC()
			SGPO(HLRS, One)
			SGPO(PWEN, One)
			Sleep(APDT)
			SGPO(HLRS, Zero)
			Sleep(IHDT)
			GLSR()
			Store(Zero, LNKD)
			While(LLess(LNKS, 0x07))
			{
				Sleep(One)
			}
			Store(Zero, CMDR)
			Store(VGAB, VGAR)
			Store(0x06, CMDR)
			Store(HVID, WVID)
			Store(HDID, WDID)
			Or(And(ELCT, 0x43), And(LCTL, 0xFFBC), LCTL)
			Or(And(ELCT, 0x43), And(\_SB.PCI0.PEG0.PEGA.LCT1, 0xFFBC), \_SB.PCI0.PEG0.PEGA.LCT1)
			Notify(\_SB.PCI0.PEG0, Zero)
			Return(One)
		}
		Method(_OFF, 0, Serialized)
		{
			Store(LCTL, ELCT)
			Store(SVID, HVID)
			Store(SDID, HDID)
			Store(VGAR, VGAB)
			Store(One, LNKD)
			While(LNotEqual(LNKS, Zero))
			{
				Sleep(One)
			}
			GLSC()
			SGPO(HLRS, One)
			SGPO(PWEN, Zero)
			GLSR()
			Notify(\_SB.PCI0.PEG0, Zero)
			Return(Zero)
		}
		Method(_STA, 0, Serialized)
		{
			If(And(SGMD, 0x0F))
			{
				If(LEqual(SGPI(PWOK), One))
				{
					Return(0x0F)
				}
				Return(Zero)
			}
			If(LNotEqual(DVID, 0xFFFF))
			{
				Return(0x0F)
			}
			Return(Zero)
		}
		Method(_DOD, 0, NotSerialized)
		{
			Return(\_SB.PCI0.GFX0._DOD)
		}
		Device(DD01)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD01._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD01._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
		}
		Device(DD02)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD02._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD02._DCS)
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD02._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
			Method(_BCL, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD02._BCL)
			}
			Method(_BQC, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD02._BQC)
			}
			Method(_BCM, 1, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD02._BCM)
				Arg0
			}
		}
		Device(DD03)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD03._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD03._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
		}
		Device(DD04)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD04._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD04._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
		}
		Device(DD05)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD05._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD05._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
		}
		Device(DD06)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD06._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD06._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
		}
		Device(DD07)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD07._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD07._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
		}
		Device(DD08)
		{
			Method(_ADR, 0, Serialized)
			{
				Return(\_SB.PCI0.GFX0.DD08._ADR)
			}
			Method(_DCS, 0, NotSerialized)
			{
			}
			Method(_DGS, 0, NotSerialized)
			{
				Return(\_SB.PCI0.GFX0.DD08._DGS)
			}
			Method(_DSS, 1, NotSerialized)
			{
			}
		}
		Method(SGPI, 1, Serialized)
		{
			ShiftRight(Arg0, 0x07, Local1)
			And(Arg0, 0x7F, Arg0)
			If(LLess(Arg0, 0x20))
			{
				Store(\_SB.PCI0.PEG0.PEGP.LVL0, Local0)
				ShiftRight(Local0, Arg0, Local0)
			}
			Else
			{
				If(LLess(Arg0, 0x40))
				{
					Store(\_SB.PCI0.PEG0.PEGP.LVL1, Local0)
					ShiftRight(Local0, Subtract(Arg0, 0x20), Local0)
				}
				Else
				{
					Store(\_SB.PCI0.PEG0.PEGP.LVL2, Local0)
					ShiftRight(Local0, Subtract(Arg0, 0x40), Local0)
				}
			}
			If(LEqual(Local1, Zero))
			{
				Not(Local0, Local0)
			}
			Return(And(Local0, One))
		}
		Method(SGPO, 2, Serialized)
		{
			ShiftRight(Arg0, 0x07, Local3)
			And(Arg0, 0x7F, Arg0)
			If(LEqual(Local3, Zero))
			{
				Not(Arg1, Local3)
				And(Local3, One, Local3)
			}
			If(LLess(Arg0, 0x20))
			{
				ShiftLeft(Local3, Arg0, Local0)
				ShiftLeft(One, Arg0, Local1)
				And(\_SB.PCI0.PEG0.PEGP.LVL0, Not(Local1), Local2)
				Or(Local2, Local0, \_SB.PCI0.PEG0.PEGP.LVL0)
			}
			Else
			{
				If(LLess(Arg0, 0x40))
				{
					ShiftLeft(Local3, Subtract(Arg0, 0x20), Local0)
					ShiftLeft(One, Subtract(Arg0, 0x20), Local1)
					And(\_SB.PCI0.PEG0.PEGP.LVL1, Not(Local1), Local2)
					Or(Local2, Local0, \_SB.PCI0.PEG0.PEGP.LVL1)
				}
				Else
				{
					ShiftLeft(Local3, Subtract(Arg0, 0x40), Local0)
					ShiftLeft(One, Subtract(Arg0, 0x40), Local1)
					And(\_SB.PCI0.PEG0.PEGP.LVL2, Not(Local1), Local2)
					Or(Local2, Local0, \_SB.PCI0.PEG0.PEGP.LVL2)
				}
			}
			Return(One)
		}
	}
	Scope(\_SB.PCI0.GFX0)
	{
		Method(ATPX, 2, Serialized)
		{
			If(LEqual(Arg0, Zero))
			{
				Name(TMP1, Buffer(0x0100)
				{
					0x00
				})
				CreateWordField(TMP1, Zero, F0SS)
				CreateWordField(TMP1, 0x02, F0IV)
				CreateDWordField(TMP1, 0x04, F0SF)
				Store(0x08, F0SS)
				Store(One, F0IV)
				Store(0xBF, F0SF)
				If(LEqual(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x0F), Zero))
				{
					Store(Zero, F0SF)
					Return(TMP1)
				}
				If(LEqual(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x0F), 0x03))
				{
					Store(Zero, F0SF)
					Return(TMP1)
				}
				If(LEqual(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x0F), 0x02))
				{
					Store(0x33, F0SF)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.PXDY, One))
				{
					And(F0SF, 0xFFFFFFFD, F0SF)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.PXFD, One))
				{
					Or(F0SF, 0x02, F0SF)
				}
				Return(TMP1)
			}
			If(LEqual(Arg0, One))
			{
				Name(TMP2, Buffer(0x0100)
				{
					0x00
				})
				CreateWordField(TMP2, Zero, F1SS)
				CreateDWordField(TMP2, 0x02, F1VM)
				CreateDWordField(TMP2, 0x06, F1FG)
				Store(0x0A, F1SS)
				Store(0x7F, F1VM)
				If(LEqual(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x0F), 0x02))
				{
					Store(Zero, F1FG)
					Store(Zero, F1VM)
					If(LEqual(\_SB.PCI0.PEG0.PEGP.PXDY, One))
					{
						Store(0x80, F1FG)
						Store(0x80, F1VM)
					}
				}
				Else
				{
					Store(0x40, F1FG)
					Store(0x40, F1VM)
				}
				Return(TMP2)
			}
			If(LEqual(Arg0, 0x02))
			{
				CreateWordField(Arg1, Zero, FN2S)
				CreateByteField(Arg1,0x02,DGPR)
				If(LEqual(DGPR, Zero))
				{
					\_SB.PCI0.PEG0.PEGP._OFF()
				}
				If(LEqual(DGPR, One))
				{
					\_SB.PCI0.PEG0.PEGP._ON()
				}
				Return(Zero)
			}
			If(LEqual(Arg0, 0x03))
			{
				CreateWordField(Arg1, Zero, FN3S)
				CreateWordField(Arg1, 0x02, SDMG)
				GLSC()
				If(LEqual(SDMG, Zero))
				{
					\_SB.PCI0.PEG0.PEGP.SGPO(\_SB.PCI0.PEG0.PEGP.DSEL, Zero)
				}
				If(LEqual(SDMG, One))
				{
					\_SB.PCI0.PEG0.PEGP.SGPO(\_SB.PCI0.PEG0.PEGP.DSEL, One)
				}
				GLSR()
				Return(Zero)
			}
			If(LEqual(Arg0, 0x04))
			{
				CreateWordField(Arg1, Zero, FN4S)
				CreateWordField(Arg1, 0x02, SIMG)
				GLSC()
				If(LEqual(SIMG, Zero))
				{
					\_SB.PCI0.PEG0.PEGP.SGPO(\_SB.PCI0.PEG0.PEGP.ESEL, Zero)
				}
				If(LEqual(SIMG, One))
				{
					\_SB.PCI0.PEG0.PEGP.SGPO(\_SB.PCI0.PEG0.PEGP.ESEL, One)
				}
				GLSR()
				Return(Zero)
			}
			If(LEqual(Arg0, 0x05))
			{
				CreateWordField(Arg1, Zero, FN5S)
				CreateWordField(Arg1, 0x02, TGFX)
				Store(TGFX, \_SB.PCI0.PEG0.PEGP.TGXA)
				Store(One, \_SB.PCI0.PEG0.PEGP.GSTP)
				Return(Zero)
			}
			If(LEqual(Arg0, 0x06))
			{
				CreateWordField(Arg1, Zero, FN6S)
				CreateWordField(Arg1, 0x02, AGFX)
				Store(AGFX, \_SB.PCI0.PEG0.PEGP.AGXA)
				Store(Zero, \_SB.PCI0.PEG0.PEGP.GSTP)
				Return(Zero)
			}
			If(LEqual(Arg0, 0x08))
			{
				Name(TMP3, Buffer(0x0100)
				{
					0x0E, 0x00, 0x46, 0x00, 0x07, 0x01, 0x00, 0x00, 
					0x01, 0x07, 0x01, 0x01, 0x00, 0x01, 0x05, 0x00, 
					0x00, 0x00, 0x04, 0x05, 0x00, 0x01, 0x10, 0x01, 
					0x07, 0x03, 0x00, 0x00, 0x03, 0x07, 0x03, 0x01, 
					0x10, 0x02, 0x07, 0x07, 0x00, 0x01, 0x03, 0x07, 
					0x07, 0x01, 0x10, 0x02, 0x07, 0x09, 0x00, 0x02, 
					0x03, 0x07, 0x09, 0x01, 0x20, 0x02, 0x07, 0x0A, 
					0x00, 0x03, 0x03, 0x07, 0x0A, 0x01, 0x30, 0x02, 
					0x07, 0x0B, 0x00, 0x04, 0x03, 0x07, 0x0B, 0x01, 
					0x30, 0x02, 0x07, 0x0C, 0x00, 0x06, 0x03
				})
				CreateWordField(TMP3, Zero, ATNO)
				CreateWordField(TMP3, 0x02, ATSZ)
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD2, One), Index(TMP3, 0x0E))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD2, One), Index(TMP3, 0x13))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD3, One), Index(TMP3, 0x18))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD3, 0x02), Index(TMP3, 0x1D))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD4, One), Index(TMP3, 0x22))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD4, 0x02), Index(TMP3, 0x27))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD5, One), Index(TMP3, 0x2C))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD5, 0x02), Index(TMP3, 0x31))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD6, One), Index(TMP3, 0x36))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD6, 0x02), Index(TMP3, 0x3B))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD7, One), Index(TMP3, 0x40))
				Store(ADPM(\_SB.PCI0.PEG0.PEGP.MXD7, 0x02), Index(TMP3, 0x45))
				If(And(\_SB.PCI0.PEG0.PEGP.SGFL, One))
				{
					Store(Add(ATNO, One), ATNO)
					Store(Add(ATSZ, 0x05), ATSZ)
				}
				Return(TMP3)
			}
			Return(Zero)
		}
		Method(ADPM, 2, Serialized)
		{
			Store(Zero, Local1)
			ShiftRight(Arg0, 0x10, Local0)
			If(LEqual(Arg1, One))
			{
				Or(And(Local0, One), Local1, Local1)
			}
			Else
			{
				Or(ShiftRight(And(Local0, 0x02), One), Local1, Local1)
			}
			ShiftLeft(Local1, One, Local1)
			ShiftRight(Arg0, 0x18, Local0)
			If(LEqual(Arg1, One))
			{
				Or(And(Local0, One), Local1, Local1)
			}
			Else
			{
				Or(ShiftRight(And(Local0, 0x02), One), Local1, Local1)
			}
			ShiftLeft(Local1, One, Local1)
			ShiftRight(Arg0, 0x08, Local0)
			If(LEqual(Arg1, One))
			{
				Or(And(Local0, One), Local1, Local1)
			}
			Else
			{
				Or(ShiftRight(And(Local0, 0x02), One), Local1, Local1)
			}
			Return(Local1)
		}
		Method(ATRM, 2, Serialized)
		{
			Store(Arg0, Local0)
			Store(Arg1, Local1)
			If(LGreater(Local1, 0x1000))
			{
				Store(0x1000, Local1)
			}
			If(LGreater(Local0, 0x00010000))
			{
				Return(Buffer(Local1)
				{
					0x00
				})
			}
			If(LGreater(Local0, \_SB.PCI0.PEG0.PEGP.RVBS))
			{
				Return(Buffer(Local1)
				{
					0x00
				})
			}
			Multiply(Local1, 0x08, Local3)
			Name(ROM1, Buffer(0x8000)
			{
				0x00
			})
			Name(ROM2, Buffer(Local1)
			{
				0x00
			})
			If(LLess(Local0, 0x8000))
			{
				Store(\_SB.PCI0.PEG0.PEGP.RBF1, ROM1)
			}
			Else
			{
				Subtract(Local0, 0x8000, Local0)
				Store(\_SB.PCI0.PEG0.PEGP.RBF2, ROM1)
			}
			Multiply(Local0, 0x08, Local2)
			CreateField(ROM1,Local2,Local3,TMPB)
			Store(TMPB, ROM2)
			Return(ROM2)
		}
	}
	Name(BDFR, 0x000F804C)
	Name(GPLS, Zero)
	OperationRegion(GPCR, SystemMemory, Or(PEBS, BDFR, BDFR), One)
	Field(GPCR, AnyAcc, NoLock, Preserve)
	{
		GPCT, 1,
	}
	Method(GLSC, 0, Serialized)
	{
		Store(GPCT, GPLS)
		If(LEqual(GPCT, One))
		{
			Store(Zero, GPCT)
		}
	}
	Method(GLSR, 0, Serialized)
	{
		Store(GPLS, GPCT)
	}
	Method(HGAS, 0, NotSerialized)
	{
		Store(One, \_SB.PCI0.PEG0.PEGP.PXGS)
		Notify(\_SB.PCI0.GFX0, 0x81)
	}
	Method(HBRT, 1, Serialized)
	{
		If(And(0x04, DSEN))
		{
			If(LEqual(Arg0, 0x04))
			{
				Notify(\_SB.PCI0.PEG0.PEGP.DD02, 0x87)
			}
			If(LEqual(Arg0, 0x03))
			{
				Notify(\_SB.PCI0.PEG0.PEGP.DD02, 0x86)
			}
		}
	}
	Method(HPFS, 0, Serialized)
	{
		If(LNotEqual(\_SB.PCI0.PEG0.PEGP.GSTP, One))
		{
			If(LEqual(\_SB.PCI0.PEG0.PEGP.AGXA, Zero))
			{
				\_SB.PCI0.GFX0.AINT
				0x02
				Zero
			}
			Else
			{
				Store(One, \_SB.PCI0.PEG0.PEGP.EMDR)
				If(LEqual(\_SB.PCI0.PEG0.PEGP.EXPM, 0x02))
				{
					Store(Zero, \_SB.PCI0.PEG0.PEGP.EXPM)
				}
				Else
				{
					Increment(\_SB.PCI0.PEG0.PEGP.EXPM)
				}
				Notify(\_SB.PCI0.GFX0, 0x81)
			}
		}
	}
	Method(HNOT, 1, Serialized)
	{
		Name(TMP0, Zero)
		While(One)
		{
			Store(Arg0, TMP0)
			If(LEqual(TMP0, One))
			{
				If(LNotEqual(\_SB.PCI0.PEG0.PEGP.GSTP, One))
				{
					If(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x02))
					{
						If(LEqual(\_SB.PCI0.PEG0.PEGP.AGXA, Zero))
						{
							Notify(\_SB.PCI0.GFX0, 0x80)
						}
						If(LEqual(\_SB.PCI0.PEG0.PEGP.AGXA, One))
						{
							Notify(\_SB.PCI0.PEG0.PEGP, 0x80)
						}
					}
					Else
					{
						Store(TMP0, \_SB.PCI0.PEG0.PEGP.DSWR)
						Notify(\_SB.PCI0.GFX0, 0x81)
					}
				}
			}
			Else
			{
				If(LEqual(TMP0, 0x02))
				{
					If(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x02))
					{
						If(LEqual(\_SB.PCI0.PEG0.PEGP.AGXA, Zero))
						{
							Notify(\_SB.PCI0.GFX0, 0x80)
						}
						If(LEqual(\_SB.PCI0.PEG0.PEGP.AGXA, One))
						{
							Notify(\_SB.PCI0.PEG0.PEGP, 0x80)
						}
					}
					Else
					{
						Notify(\_SB.PCI0.GFX0, 0x80)
					}
				}
				Else
				{
					If(LEqual(TMP0, 0x03))
					{
						If(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x02))
						{
							If(LEqual(\_SB.PCI0.PEG0.PEGP.AGXA, Zero))
							{
								Notify(\_SB.PCI0.GFX0, 0x80)
							}
							If(LEqual(\_SB.PCI0.PEG0.PEGP.AGXA, One))
							{
								Notify(\_SB.PCI0.PEG0.PEGP, 0x80)
							}
						}
						Else
						{
							Notify(\_SB.PCI0.GFX0, 0x80)
						}
					}
					Else
					{
						Notify(\_SB.PCI0.GFX0, 0x80)
					}
				}
			}
			Break
		}
	}
	Scope(\_SB.PCI0.GFX0)
	{
		Method(ATIF, 2, Serialized)
		{
			If(LEqual(Arg0, Zero))
			{
				Name(TMP0, Buffer(0x0100)
				{
					0x00
				})
				CreateWordField(TMP0, Zero, F0SS)
				CreateWordField(TMP0, 0x02, F0IV)
				CreateDWordField(TMP0, 0x04, F0SN)
				CreateDWordField(TMP0, 0x08, F0SF)
				Store(0x0C, F0SS)
				Store(One, F0IV)
				Store(0x41, F0SN)
				Store(0x07, F0SF)
				If(LEqual(And(\_SB.PCI0.PEG0.PEGP.SGMD, 0x0F), 0x02))
				{
					Store(Zero, F0SN)
					Store(Zero, F0SF)
				}
				Return(TMP0)
			}
			If(LEqual(Arg0, One))
			{
				Name(TMP1, Buffer(0x0100)
				{
					0x00
				})
				CreateWordField(TMP1, Zero, F1SS)
				CreateDWordField(TMP1, 0x02, F1VF)
				CreateDWordField(TMP1, 0x06, F1FG)
				Store(0x0A, F1SS)
				Store(0x03, F1VF)
				Store(One, F1FG)
				Return(TMP1)
			}
			If(LEqual(Arg0, 0x02))
			{
				Name(TMP2, Buffer(0x0100)
				{
					0x00
				})
				CreateWordField(TMP2, Zero, F2SS)
				CreateDWordField(TMP2, 0x02, F2PR)
				CreateByteField(TMP2,0x06,F2EM)
				CreateByteField(TMP2,0x07,F2TG)
				CreateByteField(TMP2,0x08,F2SI)
				CreateByteField(TMP2,0x09,F2FG)
				CreateByteField(TMP2,0x0A,F2FI)
				CreateByteField(TMP2,0x0B,F2SP)
				Store(0x0A, F2SS)
				Name(STS2, Zero)
				Or(\_SB.PCI0.PEG0.PEGP.DSWR, STS2, STS2)
				Or(ShiftLeft(\_SB.PCI0.PEG0.PEGP.PXGS, 0x06), STS2, STS2)
				Store(STS2, F2PR)
				Store(Zero, \_SB.PCI0.PEG0.PEGP.DSWR)
				Store(Zero, \_SB.PCI0.PEG0.PEGP.PXGS)
				Return(TMP2)
			}
			If(LEqual(Arg0, 0x03))
			{
				Name(TMP3, Buffer(0x0100)
				{
					0x00
				})
				CreateWordField(TMP3, Zero, F3SS)
				CreateWordField(TMP3, 0x02, F3SD)
				CreateWordField(Arg1, Zero, AI3S)
				CreateWordField(Arg1, 0x02, SLDS)
				CreateWordField(Arg1, 0x04, CODS)
				Store(SLDS, \_SB.PCI0.PEG0.PEGP.CACD)
				Store(CODS, \_SB.PCI0.PEG0.PEGP.CCND)
				If(\ECON)
				{
					If(LEqual(\_SB.PCI0.LPCB.H_EC.LSTE, One))
					{
						Or(\_SB.PCI0.PEG0.PEGP.CCND, One, \_SB.PCI0.PEG0.PEGP.CCND)
					}
				}
				Store(0x04, F3SS)
				Store(CTOI(\_SB.PCI0.PEG0.PEGP.CACD), \_SB.PCI0.PEG0.PEGP.TLSN)
				Store(\_SB.PCI0.PEG0.PEGP.CACD, Local1)
				Store(\_SB.PCI0.PEG0.PEGP.NTLE, Local0)
				While(Local0)
				{
					Store(NATL(\_SB.PCI0.PEG0.PEGP.TLSN), Local1)
					If(LNotEqual(Local1, Zero))
					{
						If(LEqual(And(Local1, \_SB.PCI0.PEG0.PEGP.CCND), Local1))
						{
							Store(One, Local0)
						}
					}
					Decrement(Local0)
					Increment(\_SB.PCI0.PEG0.PEGP.TLSN)
					If(LGreater(\_SB.PCI0.PEG0.PEGP.TLSN, \_SB.PCI0.PEG0.PEGP.NTLE))
					{
						Store(One, \_SB.PCI0.PEG0.PEGP.TLSN)
					}
				}
				SNXD(Local1)
				Store(Local1, \_SB.PCI0.PEG0.PEGP.NACD)
				Store(\_SB.PCI0.PEG0.PEGP.NACD, F3SD)
				Return(TMP3)
			}
			Return(Zero)
		}
		Method(CTOI, 1, NotSerialized)
		{
			If(LNotEqual(\_SB.PCI0.PEG0.PEGP.NTLE, Zero))
			{
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE1, Arg0))
				{
					Return(One)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE2, Arg0))
				{
					Return(0x02)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE3, Arg0))
				{
					Return(0x03)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE4, Arg0))
				{
					Return(0x04)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE5, Arg0))
				{
					Return(0x05)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE6, Arg0))
				{
					Return(0x06)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE7, Arg0))
				{
					Return(0x07)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE8, Arg0))
				{
					Return(0x08)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TLE9, Arg0))
				{
					Return(0x09)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TL10, Arg0))
				{
					Return(0x0A)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TL11, Arg0))
				{
					Return(0x0B)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TL12, Arg0))
				{
					Return(0x0C)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TL13, Arg0))
				{
					Return(0x0D)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TL14, Arg0))
				{
					Return(0x0E)
				}
				If(LEqual(\_SB.PCI0.PEG0.PEGP.TL15, Arg0))
				{
					Return(0x0F)
				}
			}
			Return(Zero)
		}
		Method(NATL, 1, NotSerialized)
		{
			If(LNotEqual(\_SB.PCI0.PEG0.PEGP.NTLE, Zero))
			{
				If(LEqual(Arg0, One))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE2)
				}
				If(LEqual(Arg0, 0x02))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE3)
				}
				If(LEqual(Arg0, 0x03))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE4)
				}
				If(LEqual(Arg0, 0x04))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE5)
				}
				If(LEqual(Arg0, 0x05))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE6)
				}
				If(LEqual(Arg0, 0x06))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE7)
				}
				If(LEqual(Arg0, 0x07))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE8)
				}
				If(LEqual(Arg0, 0x08))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE9)
				}
				If(LEqual(Arg0, 0x09))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TL10)
				}
				If(LEqual(Arg0, 0x0A))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TL11)
				}
				If(LEqual(Arg0, 0x0B))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TL12)
				}
				If(LEqual(Arg0, 0x0C))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TL13)
				}
				If(LEqual(Arg0, 0x0D))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TL14)
				}
				If(LEqual(Arg0, 0x0E))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TL15)
				}
				If(LEqual(Arg0, 0x0F))
				{
					Return(\_SB.PCI0.PEG0.PEGP.TLE1)
				}
			}
			Return(Zero)
		}
		Method(INDL, 0, Serialized)
		{
			Store(Zero, NXD1)
			Store(Zero, NXD2)
			Store(Zero, NXD3)
			Store(Zero, NXD4)
			Store(Zero, NXD5)
			Store(Zero, NXD6)
			Store(Zero, NXD7)
			Store(Zero, NXD8)
		}
		Method(SNXD, 1, Serialized)
		{
			INDL()
			Store(Arg0, Local0)
			If(And(Local0, 0x02))
			{
				Store(One, NXD1)
			}
			If(And(Local0, One))
			{
				Store(One, NXD2)
			}
			If(And(Local0, 0x08))
			{
				Store(One, NXD3)
			}
			If(And(Local0, 0x80))
			{
				Store(One, NXD4)
			}
			If(And(Local0, 0x0200))
			{
				Store(One, NXD5)
			}
			If(And(Local0, 0x0400))
			{
				Store(One, NXD6)
			}
			If(And(Local0, 0x0800))
			{
				Store(One, NXD7)
			}
		}
	}
}

Firmware ACPI Control Structure: 0x9CF6C000

46 41 43 53 40 00 00 00 00 00 00 00 00 00 00 00	FACS@...........
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00	................
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00	................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00	................

Signature	FACS
Length	0x00000040 (64)
Hardware Signature	0x00000000 (0)
Waking Vector	0x00000000 (0)
Global Lock	0x00000000 (0)
Flags	0x00000000
  S4BIOS	0 - Not supported
Reserved	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
Reserved	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
Reserved	0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 

Differentiated System Description Table: 0x9CFEC000

Signature	"DSDT"
Length	0x0000C553 (50515)
Revision	0x01 (1)
Checksum	0x62 (98)
OEM ID	"HP    "
OEM Table ID	"INSYDE  "
OEM Revision	0x00000000 (0)
Creator ID	"MSFT"
Creator Revision	0x01000013 (16777235)

DefinitionBlock ("DSDT.AML", "DSDT", 0x01, "HP    ", "INSYDE  ", 0x00000000)
{
	Name(SS1, Zero)
	Name(SS2, Zero)
	Name(SS3, One)
	Name(SS4, One)
	Name(SP2O, 0x4E)
	Name(SP1O, 0x2E)
	Name(IO1B, 0x0600)
	Name(IO1L, 0x70)
	Name(IO2B, 0x0600)
	Name(IO2L, 0x20)
	Name(IO3B, 0x0290)
	Name(IO3L, 0x10)
	Name(SP3O, 0x2E)
	Name(IO4B, 0x0A20)
	Name(IO4L, 0x20)
	Name(MCHB, 0xFED10000)
	Name(MCHL, 0x8000)
	Name(EGPB, 0xFED19000)
	Name(EGPL, 0x1000)
	Name(DMIB, 0xFED18000)
	Name(DMIL, 0x1000)
	Name(IFPB, 0xFED14000)
	Name(IFPL, 0x1000)
	Name(PEBS, 0xE0000000)
	Name(PELN, 0x10000000)
	Name(SMBS, 0x0580)
	Name(SMBL, 0x20)
	Name(PBLK, 0x0410)
	Name(PMBS, 0x0400)
	Name(PMLN, 0x80)
	Name(LVL2, 0x0414)
	Name(LVL3, 0x0415)
	Name(LVL4, 0x0416)
	Name(SMIP, 0xB2)
	Name(GPBS, 0x0500)
	Name(GPLN, 0x80)
	Name(APCB, 0xFEC00000)
	Name(APCL, 0x1000)
	Name(PM30, 0x0430)
	Name(SRCB, 0xFED1C000)
	Name(SRCL, 0x4000)
	Name(HPTB, 0xFED00000)
	Name(HPTC, 0xFED1F404)
	Name(ACPH, 0xDE)
	Name(ASSB, Zero)
	Name(AOTB, Zero)
	Name(AAXB, Zero)
	Name(PEHP, One)
	Name(SHPC, One)
	Name(PEPM, One)
	Name(PEER, One)
	Name(PECS, One)
	Name(DSSP, Zero)
	Name(FHPP, Zero)
	Name(FMBL, One)
	Name(FDTP, 0x02)
	Name(BSH, Zero)
	Name(BEL, One)
	Name(BEH, 0x02)
	Name(BRH, 0x03)
	Name(BTF, 0x04)
	Name(BHC, 0x05)
	Name(BYB, 0x06)
	Name(BPH, 0x07)
	Name(BSHS, 0x08)
	Name(BELS, 0x09)
	Name(BRHS, 0x0A)
	Name(BTFS, 0x0B)
	Name(BEHS, 0x0C)
	Name(BPHS, 0x0D)
	Name(BTL, 0x10)
	Name(BSR, 0x14)
	Name(BOF, 0x20)
	Name(BEF, 0x21)
	Name(BLLE, 0x22)
	Name(BLLC, 0x23)
	Name(BLCA, 0x24)
	Name(BLLS, 0x25)
	Name(BLLP, 0x26)
	Name(BLLD, 0x27)
	Name(BHBE, 0x30)
	Name(BHBC, 0x31)
	Name(BHBN, 0x32)
	Name(BHBM, 0x33)
	Name(TCGM, One)
	Name(TRTP, One)
	Name(WDTE, One)
	Name(TRTD, 0x02)
	Name(TRTI, 0x03)
	Name(PDBR, 0x4D)
	Name(DPPB, 0xFED98000)
	Name(DPPL, 0x8000)
	OperationRegion(GNVS, SystemMemory, 0x9CFBCE18, 0x000001BA)
	Field(GNVS, AnyAcc, Lock, Preserve)
	{
		OSYS, 16,
		SMIF, 8,
		PRM0, 8,
		PRM1, 8,
		SCIF, 8,
		PRM2, 8,
		PRM3, 8,
		LCKF, 8,
		PRM4, 8,
		PRM5, 8,
		P80D, 32,
		LIDS, 8,
		PWRS, 8,
		DBGS, 8,
		THOF, 8,
		ACT1, 8,
		ACTT, 8,
		PSVT, 8,
		TC1V, 8,
		TC2V, 8,
		TSPV, 8,
		CRTT, 8,
		DTSE, 8,
		DTS1, 8,
		DTS2, 8,
		DTSF, 8,
		Offset(0x25),	//Offset(37),
		REVN, 8,
		Offset(0x28),	//Offset(40),
		APIC, 8,
		TCNT, 8,
		PCP0, 8,
		PCP1, 8,
		PPCM, 8,
		PPMF, 32,
		C67L, 8,
		NATP, 8,
		CMAP, 8,
		CMBP, 8,
		LPTP, 8,
		FDCP, 8,
		COMA, 8,
		COMB, 8,
		SMSC, 8,
		W381, 8,
		SMC1, 8,
		IGDS, 8,
		TLST, 8,
		CADL, 8,
		PADL, 8,
		CSTE, 16,
		NSTE, 16,
		SSTE, 16,
		NDID, 8,
		DID1, 32,
		DID2, 32,
		DID3, 32,
		DID4, 32,
		DID5, 32,
		KSV0, 32,
		KSV1, 8,
		Offset(0x67),	//Offset(103),
		BLCS, 8,
		BRTL, 8,
		ALSE, 8,
		ALAF, 8,
		LLOW, 8,
		LHIH, 8,
		, 8,
		EMAE, 8,
		EMAP, 16,
		EMAL, 16,
		, 8,
		MEFE, 8,
		DSTS, 8,
		Offset(0x78),	//Offset(120),
		TPMP, 8,
		TPME, 8,
		MORD, 8,
		TCGP, 8,
		PPRP, 32,
		PPRQ, 8,
		LPPR, 8,
		GTF0, 56,
		GTF2, 56,
		IDEM, 8,
		GTF1, 56,
		BID, 8,
		Offset(0xAA),	//Offset(170),
		ASLB, 32,
		IBTT, 8,
		IPAT, 8,
		ITVF, 8,
		ITVM, 8,
		IPSC, 8,
		IBLC, 8,
		IBIA, 8,
		ISSC, 8,
		I409, 8,
		I509, 8,
		I609, 8,
		I709, 8,
		IPCF, 8,
		IDMS, 8,
		IF1E, 8,
		HVCO, 8,
		NXD1, 32,
		NXD2, 32,
		NXD3, 32,
		NXD4, 32,
		NXD5, 32,
		NXD6, 32,
		NXD7, 32,
		NXD8, 32,
		GSMI, 8,
		PAVP, 8,
		, 8,
		OSCC, 8,
		NEXP, 8,
		SBV1, 8,
		SBV2, 8,
		Offset(0xEB),	//Offset(235),
		DSEN, 8,
		, 8,
		GPIC, 8,
		CTYP, 8,
		L01C, 8,
		VFN0, 8,
		VFN1, 8,
		VFN2, 8,
		VFN3, 8,
		VFN4, 8,
		Offset(0x100),	//Offset(256),
		NVGA, 32,
		NVHA, 32,
		AMDA, 32,
		DID6, 32,
		DID7, 32,
		DID8, 32,
		EBAS, 32,
		CPSP, 32,
		EECP, 32,
		EVCP, 32,
		XBAS, 32,
		OBS1, 32,
		OBS2, 32,
		OBS3, 32,
		OBS4, 32,
		OBS5, 32,
		OBS6, 32,
		OBS7, 32,
		OBS8, 32,
		Offset(0x157),	//Offset(343),
		ATMC, 8,
		PTMC, 8,
		ATRA, 8,
		PTRA, 8,
		PNHM, 32,
		TBAB, 32,
		TBAH, 32,
		RTIP, 8,
		TSOD, 8,
		ATPC, 8,
		PTPC, 8,
		PFLV, 8,
		BREV, 8,
		SGMD, 8,
		SGFL, 8,
		PWOK, 8,
		HLRS, 8,
		DSEL, 8,
		ESEL, 8,
		PSEL, 8,
		PWEN, 8,
		PRST, 8,
		MXD1, 32,
		MXD2, 32,
		MXD3, 32,
		MXD4, 32,
		MXD5, 32,
		MXD6, 32,
		MXD7, 32,
		MXD8, 32,
		GBAS, 16,
		Offset(0x19D),	//Offset(413),
		ALFP, 8,
		IMON, 8,
		PDTS, 8,
		PKGA, 8,
		PAMT, 8,
		AC0F, 8,
		AC1F, 8,
		DTS3, 8,
		DTS4, 8,
		CCMD, 8,
		COMD, 8,
		LPT1, 8,
		PSTP, 8,
		WKMD, 8,
		IDER, 8,
		PIE0, 8,
		PIE1, 8,
		CSTS, 8,
		PMEE, 8,
		WOLE, 8,
		NVAD, 32,
		NVSZ, 32,
		OPTF, 8,
	}
	OperationRegion(OGNS, SystemMemory, 0x9CFBA018, 0x000010C8)
	Field(OGNS, AnyAcc, Lock, Preserve)
	{
		SERN, 80,
		MDID, 256,
		GUID, 64,
		UUID, 128,
		SKUN, 96,
		LCOD, 24,
		MACA, 48,
		KBMX, 8,
		CHID, 8,
		OSKU, 8,
		QKPM, 8,
		WPFL, 8,
		DBSW, 8,
		WPCR, 8,
		WINA, 8,
		GPSA, 8,
		MSME, 8,
		PREV, 24,
		ODDC, 8,
		WIN7, 8,
		IMID, 8,
		WSDY, 32,
		WSDM, 16,
		WSDD, 16,
		CTNU, 152,
		ESTL, 8,
		Offset(0x1000),	//Offset(4096),
		HWCT, 8,
		HWBC, 8,
		HWRC, 8,
		HWBF, 1024,
		IAOR, 8,
		CDAT, 32,
		WLVD, 16,
		WLDD, 16,
		WLSV, 16,
		WLSS, 16,
		BTVD, 16,
		BTDD, 16,
		WWVD, 16,
		WWDD, 16,
		GPVD, 16,
		GPDD, 16,
		FACM, 16,
		SMA4, 8,
		WIVD, 16,
		WIDD, 16,
		PLID, 16,
		PRON, 8,
		VGAT, 8,
		FFLG, 8,
		OG05, 8,
		OG06, 8,
		OG07, 8,
		OG08, 8,
		OG09, 8,
		OG10, 8,
		ECON, 8,
		SMP0, 8,
		SMP1, 8,
		SMP2, 8,
		SMP3, 8,
		SMP4, 8,
		SMP5, 8,
		SMP6, 8,
		SMP7, 8,
		SID0, 8,
		SID1, 8,
		SID2, 8,
		SID3, 8,
		SID4, 8,
		SID5, 8,
		SID6, 8,
		SID7, 8,
		LCDD, 32,
		JYNC, 8,
		GSEN, 8,
		MAXP, 16,
		CPID, 8,
	}
	OperationRegion(FXEM, SystemMemory, 0xFFD80000, 0xFF)
	Field(FXEM, AnyAcc, Lock, Preserve)
	{
		Offset(0x71),	//Offset(113),
		UNDA, 1,
		UNDB, 1,
		UNDC, 1,
		, 5,
		WINC, 8,
		GCAC, 8,
	}
	OperationRegion(H1DA, SystemMemory, 0x9CFBEF98, 0x0000001F)
	Field(H1DA, AnyAcc, Lock, Preserve)
	{
		H1SG, 32,
		RCKP, 8,
		HDSM, 16,
		HD1H, 64,
		HD2H, 64,
		OD1H, 64,
	}
	OperationRegion(HSMI, SystemIO, 0xB2, 0x02)
	Field(HSMI, ByteAcc, NoLock, Preserve)
	{
		HSMC, 8,
		HSMS, 8,
	}
	Scope(_SB)
	{
		Name(PRSA, ResourceTemplate()
		{
			IRQ(Level, ActiveLow, Shared) {1, 3, 4, 5, 6, 10, 11, 12, 14, 15}
		})
		Alias(PRSA, PRSB)
		Alias(PRSA, PRSC)
		Alias(PRSA, PRSD)
		Alias(PRSA, PRSE)
		Alias(PRSA, PRSF)
		Alias(PRSA, PRSG)
		Alias(PRSA, PRSH)
		Device(PCI0)
		{
			Name(_HID, EISAID("PNP0A08"))
			Name(_CID, EISAID("PNP0A03"))
			Name(_ADR, Zero)
			Method(^BN00, 0, NotSerialized)
			{
				Return(Zero)
			}
			Method(_BBN, 0, NotSerialized)
			{
				Return(BN00())
			}
			Name(_UID, Zero)
			Name(PR00, Package(36)
			{
				Package(4) {0x0016FFFF, Zero, LNKA, Zero}, 
				Package(4) {0x0016FFFF, One, LNKB, Zero}, 
				Package(4) {0x0016FFFF, 0x02, LNKC, Zero}, 
				Package(4) {0x0016FFFF, 0x03, LNKD, Zero}, 
				Package(4) {0x0019FFFF, Zero, LNKE, Zero}, 
				Package(4) {0x001AFFFF, Zero, LNKA, Zero}, 
				Package(4) {0x001AFFFF, One, LNKF, Zero}, 
				Package(4) {0x001AFFFF, 0x02, LNKD, Zero}, 
				Package(4) {0x001AFFFF, 0x03, LNKC, Zero}, 
				Package(4) {0x001BFFFF, Zero, LNKG, Zero}, 
				Package(4) {0x001CFFFF, Zero, LNKB, Zero}, 
				Package(4) {0x001CFFFF, One, LNKA, Zero}, 
				Package(4) {0x001CFFFF, 0x02, LNKC, Zero}, 
				Package(4) {0x001CFFFF, 0x03, LNKD, Zero}, 
				Package(4) {0x001DFFFF, Zero, LNKE, Zero}, 
				Package(4) {0x001DFFFF, One, LNKD, Zero}, 
				Package(4) {0x001DFFFF, 0x02, LNKC, Zero}, 
				Package(4) {0x001DFFFF, 0x03, LNKA, Zero}, 
				Package(4) {0x001FFFFF, Zero, LNKF, Zero}, 
				Package(4) {0x001FFFFF, One, LNKD, Zero}, 
				Package(4) {0x001FFFFF, 0x02, LNKD, Zero}, 
				Package(4) {0x001FFFFF, 0x03, LNKA, Zero}, 
				Package(4) {0x0001FFFF, Zero, LNKA, Zero}, 
				Package(4) {0x0001FFFF, One, LNKB, Zero}, 
				Package(4) {0x0001FFFF, 0x02, LNKC, Zero}, 
				Package(4) {0x0001FFFF, 0x03, LNKD, Zero}, 
				Package(4) {0x0002FFFF, Zero, LNKA, Zero}, 
				Package(4) {0x0004FFFF, Zero, LNKA, Zero}, 
				Package(4) {0x0004FFFF, One, LNKB, Zero}, 
				Package(4) {0x0004FFFF, 0x02, LNKC, Zero}, 
				Package(4) {0x0004FFFF, 0x03, LNKD, Zero}, 
				Package(4) {0x0006FFFF, Zero, LNKD, Zero}, 
				Package(4) {0x0006FFFF, One, LNKA, Zero}, 
				Package(4) {0x0006FFFF, 0x02, LNKB, Zero}, 
				Package(4) {0x0006FFFF, 0x03, LNKC, Zero}, 
				Package(4) {0x0018FFFF, Zero, LNKE, Zero}
			})
			Name(AR00, Package(36)
			{
				Package(4) {0x0016FFFF, Zero, Zero, 0x10}, 
				Package(4) {0x0016FFFF, One, Zero, 0x11}, 
				Package(4) {0x0016FFFF, 0x02, Zero, 0x12}, 
				Package(4) {0x0016FFFF, 0x03, Zero, 0x13}, 
				Package(4) {0x0019FFFF, Zero, Zero, 0x14}, 
				Package(4) {0x001AFFFF, Zero, Zero, 0x10}, 
				Package(4) {0x001AFFFF, One, Zero, 0x15}, 
				Package(4) {0x001AFFFF, 0x02, Zero, 0x13}, 
				Package(4) {0x001AFFFF, 0x03, Zero, 0x12}, 
				Package(4) {0x001BFFFF, Zero, Zero, 0x16}, 
				Package(4) {0x001CFFFF, Zero, Zero, 0x11}, 
				Package(4) {0x001CFFFF, One, Zero, 0x10}, 
				Package(4) {0x001CFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0x001CFFFF, 0x03, Zero, 0x13}, 
				Package(4) {0x001DFFFF, Zero, Zero, 0x14}, 
				Package(4) {0x001DFFFF, One, Zero, 0x13}, 
				Package(4) {0x001DFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0x001DFFFF, 0x03, Zero, 0x10}, 
				Package(4) {0x001FFFFF, Zero, Zero, 0x15}, 
				Package(4) {0x001FFFFF, One, Zero, 0x13}, 
				Package(4) {0x001FFFFF, 0x02, Zero, 0x13}, 
				Package(4) {0x001FFFFF, 0x03, Zero, 0x10}, 
				Package(4) {0x0001FFFF, Zero, Zero, 0x10}, 
				Package(4) {0x0001FFFF, One, Zero, 0x11}, 
				Package(4) {0x0001FFFF, 0x02, Zero, 0x12}, 
				Package(4) {0x0001FFFF, 0x03, Zero, 0x13}, 
				Package(4) {0x0002FFFF, Zero, Zero, 0x10}, 
				Package(4) {0x0004FFFF, Zero, Zero, 0x10}, 
				Package(4) {0x0004FFFF, One, Zero, 0x11}, 
				Package(4) {0x0004FFFF, 0x02, Zero, 0x12}, 
				Package(4) {0x0004FFFF, 0x03, Zero, 0x13}, 
				Package(4) {0x0006FFFF, Zero, Zero, 0x13}, 
				Package(4) {0x0006FFFF, One, Zero, 0x10}, 
				Package(4) {0x0006FFFF, 0x02, Zero, 0x11}, 
				Package(4) {0x0006FFFF, 0x03, Zero, 0x12}, 
				Package(4) {0x0018FFFF, Zero, Zero, 0x14}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR00)
				}
				Return(PR00)
			}
			OperationRegion(HBUS, PCI_Config, Zero, 0x0100)
			Field(HBUS, DWordAcc, NoLock, Preserve)
			{
				Offset(0x40),	//Offset(64),
				EPEN, 1,
				, 7,
				Offset(0x41),	//Offset(65),
				, 4,
				EPBR, 20,
				Offset(0x48),	//Offset(72),
				MHEN, 1,
				, 7,
				Offset(0x49),	//Offset(73),
				, 7,
				MHBR, 17,
				Offset(0x50),	//Offset(80),
				GCLK, 1,
				Offset(0x54),	//Offset(84),
				D0EN, 1,
				Offset(0x60),	//Offset(96),
				PXEN, 1,
				PXSZ, 2,
				, 5,
				Offset(0x63),	//Offset(99),
				, 2,
				PXBR, 6,
				Offset(0x68),	//Offset(104),
				DIEN, 1,
				, 7,
				Offset(0x69),	//Offset(105),
				, 4,
				DIBR, 20,
				Offset(0x70),	//Offset(112),
				Offset(0x72),	//Offset(114),
				, 4,
				MEBR, 12,
				Offset(0x80),	//Offset(128),
				, 4,
				PM0H, 2,
				, 2,
				PM1L, 2,
				, 2,
				PM1H, 2,
				, 2,
				PM2L, 2,
				, 2,
				PM2H, 2,
				, 2,
				PM3L, 2,
				, 2,
				PM3H, 2,
				, 2,
				PM4L, 2,
				, 2,
				PM4H, 2,
				, 2,
				PM5L, 2,
				, 2,
				PM5H, 2,
				, 2,
				PM6L, 2,
				, 2,
				PM6H, 2,
				, 2,
				Offset(0xA8),	//Offset(168),
				Offset(0xAA),	//Offset(170),
				, 4,
				TUUD, 19,
				Offset(0xBC),	//Offset(188),
				Offset(0xBE),	//Offset(190),
				, 4,
				TLUD, 12,
				Offset(0xC8),	//Offset(200),
				, 7,
				HTSE, 1,
			}
			OperationRegion(MCHT, SystemMemory, 0xFED10000, 0x1100)
			Field(MCHT, ByteAcc, NoLock, Preserve)
			{
			}
			Name(BUF0, Buffer(0x01D4)
			{
				0x88, 0x0D, 0x00, 0x02, 0x0C, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 
				0x87, 0x17, 0x00, 0x01, 0x0C, 0x03, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x0C, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0C, 
				0x00, 0x00, 0x47, 0x01, 0xF8, 0x0C, 0xF8, 0x0C, 
				0x01, 0x08, 0x87, 0x17, 0x00, 0x01, 0x0C, 0x03, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 
				0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0xF3, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 
				0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
				0x0A, 0x00, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x87, 0x17, 
				0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x0C, 0x00, 0xFF, 0x3F, 0x0C, 0x00, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
				0x87, 0x17, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x40, 0x0C, 0x00, 0xFF, 0x7F, 
				0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
				0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0C, 0x03, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0C, 0x00, 
				0xFF, 0xBF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 
				0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 
				0x0C, 0x00, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 
				0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x0D, 0x00, 0xFF, 0x3F, 0x0D, 0x00, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
				0x87, 0x17, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x40, 0x0D, 0x00, 0xFF, 0x7F, 
				0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
				0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0C, 0x03, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0D, 0x00, 
				0xFF, 0xBF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 
				0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 
				0x0D, 0x00, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 
				0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x0E, 0x00, 0xFF, 0x3F, 0x0E, 0x00, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
				0x87, 0x17, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x40, 0x0E, 0x00, 0xFF, 0x7F, 
				0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
				0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 0x0C, 0x03, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0E, 0x00, 
				0xFF, 0xBF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 0x00, 0x00, 
				0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 
				0x0E, 0x00, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x87, 0x17, 
				0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 
				0x00, 0x00, 0x0F, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
				0x87, 0x17, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 
				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 
				0xAF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
				0xB0, 0xFE, 0x79, 0x00
			})
			Method(_CRS, 0, Serialized)
			{
				CreateWordField(BUF0, 0x0A, PBMX)
				Store(Subtract(ShiftRight(PELN, 0x14), 0x02), PBMX)
				CreateWordField(BUF0, 0x0E, PBLN)
				Store(Subtract(ShiftRight(PELN, 0x14), One), PBLN)
				If(PM1L)
				{
					CreateDWordField(BUF0, 0x7C, C0LN)
					Store(Zero, C0LN)
				}
				If(LEqual(PM1L, One))
				{
					CreateBitField(BUF0,0x0358,C0RW)
					Store(Zero, C0RW)
				}
				If(PM1H)
				{
					CreateDWordField(BUF0, 0x96, C4LN)
					Store(Zero, C4LN)
				}
				If(LEqual(PM1H, One))
				{
					CreateBitField(BUF0,0x0428,C4RW)
					Store(Zero, C4RW)
				}
				If(PM2L)
				{
					CreateDWordField(BUF0, 0xB0, C8LN)
					Store(Zero, C8LN)
				}
				If(LEqual(PM2L, One))
				{
					CreateBitField(BUF0,0x04F8,C8RW)
					Store(Zero, C8RW)
				}
				If(PM2H)
				{
					CreateDWordField(BUF0, 0xCA, CCLN)
					Store(Zero, CCLN)
				}
				If(LEqual(PM2H, One))
				{
					CreateBitField(BUF0,0x05C8,CCRW)
					Store(Zero, CCRW)
				}
				If(PM3L)
				{
					CreateDWordField(BUF0, 0xE4, D0LN)
					Store(Zero, D0LN)
				}
				If(LEqual(PM3L, One))
				{
					CreateBitField(BUF0,0x0698,D0RW)
					Store(Zero, D0RW)
				}
				If(PM3H)
				{
					CreateDWordField(BUF0, 0xFE, D4LN)
					Store(Zero, D4LN)
				}
				If(LEqual(PM3H, One))
				{
					CreateBitField(BUF0,0x0768,D4RW)
					Store(Zero, D4RW)
				}
				If(PM4L)
				{
					CreateDWordField(BUF0, 0x0118, D8LN)
					Store(Zero, D8LN)
				}
				If(LEqual(PM4L, One))
				{
					CreateBitField(BUF0,0x0838,D8RW)
					Store(Zero, D8RW)
				}
				If(PM4H)
				{
					CreateDWordField(BUF0, 0x0132, DCLN)
					Store(Zero, DCLN)
				}
				If(LEqual(PM4H, One))
				{
					CreateBitField(BUF0,0x0908,DCRW)
					Store(Zero, DCRW)
				}
				If(PM5L)
				{
					CreateDWordField(BUF0, 0x014C, E0LN)
					Store(Zero, E0LN)
				}
				If(LEqual(PM5L, One))
				{
					CreateBitField(BUF0,0x09D8,E0RW)
					Store(Zero, E0RW)
				}
				If(PM5H)
				{
					CreateDWordField(BUF0, 0x0166, E4LN)
					Store(Zero, E4LN)
				}
				If(LEqual(PM5H, One))
				{
					CreateBitField(BUF0,0x0AA8,E4RW)
					Store(Zero, E4RW)
				}
				If(PM6L)
				{
					CreateDWordField(BUF0, 0x0180, E8LN)
					Store(Zero, E8LN)
				}
				If(LEqual(PM6L, One))
				{
					CreateBitField(BUF0,0x0B78,E8RW)
					Store(Zero, E8RW)
				}
				If(PM6H)
				{
					CreateDWordField(BUF0, 0x019A, ECLN)
					Store(Zero, ECLN)
				}
				If(LEqual(PM6H, One))
				{
					CreateBitField(BUF0,0x0C48,ECRW)
					Store(Zero, ECRW)
				}
				If(PM0H)
				{
					CreateDWordField(BUF0, 0x01B4, F0LN)
					Store(Zero, F0LN)
				}
				If(LEqual(PM0H, One))
				{
					CreateBitField(BUF0,0x0D18,F0RW)
					Store(Zero, F0RW)
				}
				CreateDWordField(BUF0, 0x01C2, M1MN)
				CreateDWordField(BUF0, 0x01C6, M1MX)
				CreateDWordField(BUF0, 0x01CE, M1LN)
				ShiftLeft(TLUD, 0x14, M1MN)
				Add(Subtract(M1MX, M1MN), One, M1LN)
				Return(BUF0)
			}
			Name(GUID, Buffer(0x10)
			{
				0x5B, 0x4D, 0xDB, 0x33, 0xF7, 0x1F, 0x1C, 0x40, 
				0x96, 0x57, 0x74, 0x41, 0xC0, 0x3D, 0xD7, 0x66
			})
			Name(SUPP, Zero)
			Name(CTRL, Zero)
			Method(_OSC, 4, Serialized)
			{
				Store(Arg3, Local0)
				CreateDWordField(Local0, Zero, CDW1)
				CreateDWordField(Local0, 0x04, CDW2)
				CreateDWordField(Local0, 0x08, CDW3)
				If(LAnd(LEqual(Arg0, GUID), NEXP))
				{
					Store(CDW2, SUPP)
					Store(CDW3, CTRL)
					If(Not(And(CDW1, One)))
					{
						If(And(CTRL, One))
						{
							NHPG()
						}
						If(And(CTRL, 0x04))
						{
							NPME()
						}
					}
					If(LNotEqual(Arg1, One))
					{
						Or(CDW1, 0x08, CDW1)
					}
					If(LNotEqual(CDW3, CTRL))
					{
						Or(CDW1, 0x10, CDW1)
					}
					Store(CTRL, CDW3)
					Store(CTRL, OSCC)
					Return(Local0)
				}
				Else
				{
					Or(CDW1, 0x04, CDW1)
					Return(Local0)
				}
			}
			Device(P0P1)
			{
				Name(_ADR, 0x001E0000)
				Method(_PRW, 0, NotSerialized)
				{
					If(PMEE)
					{
						Return(Package(2) {0x0B, 0x03})
					}
					Else
					{
						Return(Package(2) {0x0B, Zero})
					}
				}
				Name(PR01, Package(12)
				{
					Package(4) {0xFFFF, Zero, LNKF, Zero}, 
					Package(4) {0xFFFF, One, LNKG, Zero}, 
					Package(4) {0xFFFF, 0x02, LNKH, Zero}, 
					Package(4) {0xFFFF, 0x03, LNKE, Zero}, 
					Package(4) {0x0001FFFF, Zero, LNKG, Zero}, 
					Package(4) {0x0001FFFF, One, LNKF, Zero}, 
					Package(4) {0x0001FFFF, 0x02, LNKE, Zero}, 
					Package(4) {0x0001FFFF, 0x03, LNKH, Zero}, 
					Package(4) {0x0005FFFF, Zero, LNKC, Zero}, 
					Package(4) {0x0005FFFF, One, LNKE, Zero}, 
					Package(4) {0x0005FFFF, 0x02, LNKG, Zero}, 
					Package(4) {0x0005FFFF, 0x03, LNKF, Zero}
				})
				Name(AR01, Package(12)
				{
					Package(4) {0xFFFF, Zero, Zero, 0x15}, 
					Package(4) {0xFFFF, One, Zero, 0x16}, 
					Package(4) {0xFFFF, 0x02, Zero, 0x17}, 
					Package(4) {0xFFFF, 0x03, Zero, 0x14}, 
					Package(4) {0x0001FFFF, Zero, Zero, 0x16}, 
					Package(4) {0x0001FFFF, One, Zero, 0x15}, 
					Package(4) {0x0001FFFF, 0x02, Zero, 0x14}, 
					Package(4) {0x0001FFFF, 0x03, Zero, 0x17}, 
					Package(4) {0x0005FFFF, Zero, Zero, 0x12}, 
					Package(4) {0x0005FFFF, One, Zero, 0x14}, 
					Package(4) {0x0005FFFF, 0x02, Zero, 0x16}, 
					Package(4) {0x0005FFFF, 0x03, Zero, 0x15}
				})
				Method(_PRT, 0, NotSerialized)
				{
					If(PICM)
					{
						Return(AR01)
					}
					Return(PR01)
				}
			}
			Device(LPCB)
			{
				Name(_ADR, 0x001F0000)
				Scope(\_SB)
				{
					OperationRegion(PCI0.LPCB.LPC1, PCI_Config, 0x40, 0xC0)
					Field(PCI0.LPCB.LPC1, AnyAcc, NoLock, Preserve)
					{
						Offset(0x20),	//Offset(32),
						PARC, 8,
						PBRC, 8,
						PCRC, 8,
						PDRC, 8,
						Offset(0x28),	//Offset(40),
						PERC, 8,
						PFRC, 8,
						PGRC, 8,
						PHRC, 8,
					}
					Device(LNKA)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, One)
						Method(_DIS, 0, Serialized)
						{
							Or(PARC, 0x80, PARC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSA)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLA, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLA, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PARC, 0x0F), IRQ0)
							Return(RTLA)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PARC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PARC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
					Device(LNKB)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, 0x02)
						Method(_DIS, 0, Serialized)
						{
							Or(PBRC, 0x80, PBRC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSB)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLB, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLB, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PBRC, 0x0F), IRQ0)
							Return(RTLB)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PBRC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PBRC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
					Device(LNKC)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, 0x03)
						Method(_DIS, 0, Serialized)
						{
							Or(PCRC, 0x80, PCRC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSC)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLC, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLC, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PCRC, 0x0F), IRQ0)
							Return(RTLC)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PCRC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PCRC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
					Device(LNKD)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, 0x04)
						Method(_DIS, 0, Serialized)
						{
							Or(PDRC, 0x80, PDRC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSD)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLD, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLD, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PDRC, 0x0F), IRQ0)
							Return(RTLD)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PDRC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PDRC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
					Device(LNKE)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, 0x05)
						Method(_DIS, 0, Serialized)
						{
							Or(PERC, 0x80, PERC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSE)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLE, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLE, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PERC, 0x0F), IRQ0)
							Return(RTLE)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PERC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PERC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
					Device(LNKF)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, 0x06)
						Method(_DIS, 0, Serialized)
						{
							Or(PFRC, 0x80, PFRC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSF)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLF, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLF, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PFRC, 0x0F), IRQ0)
							Return(RTLF)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PFRC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PFRC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
					Device(LNKG)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, 0x07)
						Method(_DIS, 0, Serialized)
						{
							Or(PGRC, 0x80, PGRC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSG)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLG, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLG, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PGRC, 0x0F), IRQ0)
							Return(RTLG)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PGRC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PGRC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
					Device(LNKH)
					{
						Name(_HID, EISAID("PNP0C0F"))
						Name(_UID, 0x08)
						Method(_DIS, 0, Serialized)
						{
							Or(PHRC, 0x80, PHRC)
						}
						Method(_PRS, 0, Serialized)
						{
							Return(PRSH)
						}
						Method(_CRS, 0, Serialized)
						{
							Name(RTLH, ResourceTemplate()
							{
								IRQ(Level, ActiveLow, Shared) {}
							})
							CreateWordField(RTLH, One, IRQ0)
							Store(Zero, IRQ0)
							ShiftLeft(One, And(PHRC, 0x0F), IRQ0)
							Return(RTLH)
						}
						Method(_SRS, 1, Serialized)
						{
							CreateWordField(Arg0, One, IRQ0)
							FindSetRightBit(IRQ0, Local0)
							Decrement(Local0)
							Store(Local0, PHRC)
						}
						Method(_STA, 0, Serialized)
						{
							If(And(PHRC, 0x80))
							{
								Return(0x09)
							}
							Else
							{
								Return(0x0B)
							}
						}
					}
				}
				OperationRegion(LPC0, PCI_Config, 0x40, 0xC0)
				Field(LPC0, AnyAcc, NoLock, Preserve)
				{
					Offset(0x40),	//Offset(64),
					IOD0, 8,
					IOD1, 8,
					Offset(0xB0),	//Offset(176),
					RAEN, 1,
					, 7,
					Offset(0xB1),	//Offset(177),
					, 6,
					RCBA, 18,
				}
				Device(EC)
				{
					Name(_HID, EISAID("PNP0C09"))
					Name(_UID, One)
					Name(ECOK, Zero)
					Mutex(MTX2, 0)
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x0062, 0x0062, 0x00, 0x01)
						IO(Decode16, 0x0066, 0x0066, 0x00, 0x01)
					})
					Method(_REG, 2, NotSerialized)
					{
						If(LEqual(Arg0, 0x03))
						{
							Store(Arg1, ECOK)
							Store(Arg1, ECOK)
							If(_OSI("Windows 2009"))
							{
								Store(One, WN7)
							}
							Store(LDS, LIDS)
						}
					}
					OperationRegion(ECF2, EmbeddedControl, Zero, 0xFF)
					Field(ECF2, ByteAcc, Lock, Preserve)
					{
						Offset(0x8),	//Offset(8),
						BDNB, 112,
						Offset(0x20),	//Offset(32),
						RTTE, 16,
						ATTE, 16,
						ATTF, 16,
						AVGC, 16,
						CHGV, 16,
						CHGC, 16,
						Offset(0x30),	//Offset(48),
						CTL, 128,
						Offset(0x42),	//Offset(66),
						SPRT, 8,
						SADD, 8,
						SCMD, 8,
						SLEN, 8,
						SDA0, 8,
						SDA1, 8,
						SDA2, 8,
						SDA3, 8,
						SSTS, 7,
						BSSF, 1,
						Offset(0x55),	//Offset(85),
						MBID, 8,
						, 2,
						ADDC, 1,
						OWAN, 1,
						FTCM, 1,
						, 1,
						TRIC, 1,
						STPC, 1,
						QKL, 8,
						QKH, 8,
						GSTA, 8,
						MMOS, 8,
						DMOS, 8,
						, 8,
						CURP, 8,
						BATC, 8,
						BATR, 8,
						BATS, 8,
						, 8,
						HOT, 8,
						CRT, 8,
						, 8,
						PWM, 8,
						WN7, 1,
						VIS, 1,
						WXP, 1,
						, 5,
						WOL, 1,
						WOU, 1,
						WOR, 1,
						Offset(0x6C),	//Offset(108),
						TCCV, 8,
						Offset(0x70),	//Offset(112),
						BSW, 16,
						Offset(0x7A),	//Offset(122),
						CRI, 8,
						Offset(0x7E),	//Offset(126),
						ECV, 16,
						, 8,
						SLP, 8,
						, 2,
						ACP, 1,
						SMO, 1,
						, 2,
						DFN, 1,
						B50, 1,
						LDS, 1,
						, 3,
						TPS, 1,
						, 2,
						ACOV, 1,
						ADP, 1,
						S3L, 1,
						BATP, 1,
						, 1,
						BCNL, 1,
						BCCL, 1,
						BF25, 1,
						Offset(0x89),	//Offset(137),
						BDC, 16,
						Offset(0x8D),	//Offset(141),
						BFC, 16,
						BCY, 16,
						BTEC, 16,
						Offset(0x95),	//Offset(149),
						BDV, 16,
						Offset(0x99),	//Offset(153),
						BST, 16,
						Offset(0x9D),	//Offset(157),
						BPR, 16,
						Offset(0xA1),	//Offset(161),
						BRC, 16,
						Offset(0xA5),	//Offset(165),
						BPV, 16,
						, 8,
						TURS, 8,
						BMD, 16,
						Offset(0xAD),	//Offset(173),
						BCW, 16,
						Offset(0xB1),	//Offset(177),
						BCL, 16,
						Offset(0xB5),	//Offset(181),
						BG1, 16,
						Offset(0xBD),	//Offset(189),
						BMN, 16,
						Offset(0xC1),	//Offset(193),
						BTN, 64,
						BSN, 16,
						Offset(0xD1),	//Offset(209),
						BTY, 16,
						Offset(0xD9),	//Offset(217),
						BC4, 16,
						BC3, 16,
						BC2, 16,
						BC1, 16,
						CTS, 8,
						CT0, 8,
						CT1, 8,
						CT2, 8,
						CPT0, 8,
						SAS, 8,
						BTT, 16,
						Offset(0xEB),	//Offset(235),
						BPP, 8,
						Offset(0xEE),	//Offset(238),
						BPC, 1,
						BPF, 1,
						BPW, 1,
						BPT, 1,
						Offset(0xF0),	//Offset(240),
						LCBD, 4,
						LCBA, 4,
						Offset(0xF3),	//Offset(243),
						FAO, 1,
						FST, 1,
						PAE, 1,
						, 1,
						QLB, 1,
						Offset(0xF5),	//Offset(245),
						WLS, 1,
						, 1,
						WWS, 1,
						, 1,
						WLD, 1,
						WWD, 1,
						, 2,
						BTS, 1,
						, 3,
						BTD, 1,
						, 3,
						FAT, 8,
						BAB, 8,
						GLD, 1,
						, 7,
						FSD, 8,
						TAU, 1,
						TCM, 1,
						TLG, 1,
						TSA, 1,
					}
					Method(ESBW, 5, NotSerialized)
					{
						Store(Arg0, SPRT)
						Store(Arg1, SADD)
						Store(Arg2, SCMD)
						Store(Arg3, SLEN)
						Store(Arg4, SDA0)
						Store(Zero, SSTS)
						Store(One, BSSF)
						While(BSSF)
						{
							Sleep(0x0A)
						}
						And(SSTS, 0x1F, Local0)
						Return(Local0)
					}
					Method(ESBR, 3, NotSerialized)
					{
						Store(Package(3) {0x07, Zero, Zero}, Local0)
						Store(Arg0, SPRT)
						Store(Arg1, SADD)
						Store(Arg2, SCMD)
						Store(Zero, SSTS)
						Store(One, BSSF)
						While(BSSF)
						{
							Sleep(0x0A)
						}
						Store(SLEN, Index(Local0, One))
						Store(SDA0, Index(Local0, 0x02))
						And(SSTS, 0x1F, Index(Local0, Zero))
						Return(Local0)
					}
					Method(SPST, 1, NotSerialized)
					{
						Store(Arg0, \_PR.CPU0._PPC)
						Notify(\_PR.CPU0, 0x80)
						If(LGreater(Arg0, MAXP))
						{
							Store(MAXP, CURP)
						}
						Else
						{
							Store(Arg0, CURP)
						}
					}
					Method(STST, 1, NotSerialized)
					{
						Store(Arg0, \_PR.CPU0._TPC)
						Notify(\_PR.CPU0, 0x82)
					}
					Name(_GPE, 0x17)
					Method(_Q03, 0, NotSerialized)
					{
						Store(0x03, IO80)
						Notify(BAT0, 0x80)
					}
					Method(_Q04, 0, NotSerialized)
					{
						Store(0x04, IO80)
						Notify(BAT0, 0x80)
					}
					Method(_Q06, 0, NotSerialized)
					{
						Store(0x06, IO80)
						If(ADP)
						{
							Notify(BAT0, Zero)
							Notify(BAT0, 0x80)
							Store(One, BATC)
						}
						Else
						{
							Notify(BAT0, One)
							Notify(BAT0, 0x80)
						}
						Store(0x03, ^^^^WMID.WMIU)
						Store(Zero, ^^^^WMID.WMIV)
						Notify(WMID, 0x80)
						^^^^ACEL.AJAL()
						If(LEqual(CPID, 0x05))
						{
							Store(ADP, PWRS)
							PNOT()
						}
					}
					Method(_Q08, 0, NotSerialized)
					{
						Store(0x08, IO80)
						^^^^BAT0.INUT()
						Notify(BAT0, 0x80)
						If(BATP)
						{
							Store(Zero, SIMD)
						}
						Else
						{
							Store(One, SIMD)
						}
						Store(0x05, ^^^^WMID.WMIU)
						Store(Zero, ^^^^WMID.WMIV)
						Notify(WMID, 0x80)
					}
					Method(_Q09, 0, NotSerialized)
					{
						Store(0x09, IO80)
						^^^^BAT0.UBST()
						Notify(BAT0, 0x80)
					}
					Method(_Q0A, 0, NotSerialized)
					{
						Store(0x0A, IO80)
						Notify(LID, 0x80)
						^^^^ACEL.AJAL()
					}
					Method(_Q14, 0, NotSerialized)
					{
						Store(0x14, IO80)
						^^^GFX0.GHDS(One)
					}
					Method(_Q17, 0, NotSerialized)
					{
						Store(0x17, IO80)
						Notify(^^^GFX0.DD02, 0x87)
						Notify(^^^PEG0.PEGP.DD02, 0x87)
						STBL()
					}
					Method(_Q18, 0, NotSerialized)
					{
						Store(0x18, IO80)
						Notify(^^^GFX0.DD02, 0x86)
						Notify(^^^PEG0.PEGP.DD02, 0x86)
						STBL()
					}
					Method(_Q1A, 0, NotSerialized)
					{
						Store(0x1A, IO80)
						Divide(MAXP, 0x03, Local1, Local0)
						Multiply(Local0, 0x02, Local0)
						SPST(Local0)
					}
					Method(_Q1C, 0, NotSerialized)
					{
						Store(0x1C, IO80)
						Divide(MAXP, 0x03, Local1, Local0)
						Multiply(Local0, 0x02, Local0)
						SPST(Local0)
					}
					Method(_Q1D, 0, NotSerialized)
					{
						Store(0x1D, IO80)
					}
					Method(_Q1F, 0, NotSerialized)
					{
						Store(0x1F, IO80)
						^^^^WMID.STPS()
						STST(Zero)
					}
					Method(_Q20, 0, NotSerialized)
					{
						Store(0x20, IO80)
						_Q1F()
						Sleep(0x14)
						Notify(\_TZ.THRM, 0x80)
					}
					Method(_Q37, 0, NotSerialized)
					{
						Store(0x37, IO80)
						Acquire(MTX2, 0xFFFF)
						Divide(MAXP, 0x03, Local1, Local0)
						Multiply(Local0, One, Local0)
						SPST(Local0)
						Release(MTX2)
					}
					Method(_Q38, 0, NotSerialized)
					{
						Store(0x38, IO80)
						Acquire(MTX2, 0xFFFF)
						Divide(MAXP, 0x03, Local1, Local0)
						Multiply(Local0, 0x02, Local0)
						SPST(Local0)
						Release(MTX2)
					}
					Method(_Q39, 0, NotSerialized)
					{
						Store(0x39, IO80)
						Acquire(MTX2, 0xFFFF)
						SPST(MAXP)
						Release(MTX2)
					}
					Method(_Q3A, 0, NotSerialized)
					{
						Store(0x3A, IO80)
						Acquire(MTX2, 0xFFFF)
						^^^^WMID.STPS()
					}
					Method(_Q3B, 0, NotSerialized)
					{
						Store(0x3B, IO80)
						Acquire(MTX2, 0xFFFF)
						Divide(MAXP, 0x03, Local1, Local0)
						Multiply(Local0, One, Local0)
						SPST(Local0)
						Release(MTX2)
					}
					Method(_Q3C, 0, NotSerialized)
					{
						Store(0x3C, IO80)
						Acquire(MTX2, 0xFFFF)
						Divide(MAXP, 0x03, Local1, Local0)
						Multiply(Local0, 0x02, Local0)
						SPST(Local0)
						Release(MTX2)
					}
					Method(_Q3F, 0, NotSerialized)
					{
						Store(0x3F, IO80)
						Acquire(MTX2, 0xFFFF)
						If(LEqual(TURS, One))
						{
							SPST(0x02)
						}
						Else
						{
							SPST(One)
						}
						Release(MTX2)
					}
					Name(WLSL, One)
					Name(BTSL, One)
					Name(WWSL, One)
					Name(WLAS, One)
					Method(_Q43, 0, NotSerialized)
					{
						Store(0x43, IO80)
						If(BTNS)
						{
							Store(Zero, BTNS)
							Store(Zero, BTNB)
							If(WLS)
							{
								Store(Zero, WLD)
							}
							If(BTS)
							{
								Store(Zero, BTD)
								Store(One, BTPR)
							}
							If(WWS)
							{
								Store(Zero, WWD)
							}
						}
						Else
						{
							Store(One, BTNS)
							Store(One, BTNB)
							If(WLAS)
							{
								If(LAnd(WLS, WLSL))
								{
									If(WLWI)
									{
										Store(One, WLD)
									}
								}
								If(LAnd(BTS, BTSL))
								{
									If(BTWI)
									{
										Store(One, BTD)
										Store(Zero, BTPR)
									}
								}
								If(LAnd(WWS, WWSL))
								{
									If(WWWI)
									{
										Store(One, WWD)
									}
								}
							}
							Else
							{
								If(LAnd(WLS, WLSL))
								{
									Store(Zero, WLD)
								}
								If(LAnd(BTS, BTSL))
								{
									Store(Zero, BTD)
									Store(One, BTPR)
								}
								If(LAnd(WWS, WWSL))
								{
									Store(Zero, WWD)
								}
							}
						}
						Sleep(0xC8)
						Store(0x05, ^^^^WMID.WMIU)
						Store(Zero, ^^^^WMID.WMIV)
						Notify(WMID, 0x80)
					}
					Method(_QCC, 0, NotSerialized)
					{
						Store(0xCC, IO80)
						^^^^WMID.STPS()
					}
					Method(_Q44, 0, NotSerialized)
					{
						Store(0x44, IO80)
						Store(0xD7, SSMP)
					}
					Method(_QCE, 0, NotSerialized)
					{
						Store(0xCE, IO80)
						If(And(CFGD, 0x00080000))
						{
							STST(0x08)
						}
						Else
						{
							STST(0x04)
						}
					}
					Name(LGP1, Package(11) {0x06, 0x08, 0x0A, 0x0E, 0x13, 0x19, 0x21, 0x2C, 0x3A, 0x4C, 0x64})
					Name(CMO1, Package(11) {0x07, 0x09, 0x0C, 0x0F, 0x14, 0x1B, 0x24, 0x2F, 0x3E, 0x52, 0x64})
					Name(BUFF, Buffer(0x0B)
					{
						0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
						0x00, 0x00, 0x00
					})
					CreateByteField(BUFF,Zero,BUF0)
					CreateByteField(BUFF,One,BUF1)
					CreateByteField(BUFF,0x02,BUF2)
					CreateByteField(BUFF,0x03,BUF3)
					CreateByteField(BUFF,0x04,BUF4)
					CreateByteField(BUFF,0x05,BUF5)
					CreateByteField(BUFF,0x06,BUF6)
					CreateByteField(BUFF,0x07,BUF7)
					CreateByteField(BUFF,0x08,BUF8)
					CreateByteField(BUFF,0x09,BUF9)
					CreateByteField(BUFF,0x0A,BUFA)
					Method(STBL, 0, Serialized)
					{
						Sleep(0x32)
						If(ADP)
						{
							Store(RTBL(), LCBA)
						}
						Else
						{
							Store(RTBL(), LCBD)
						}
					}
					Method(RTBL, 0, Serialized)
					{
						If(LEqual(LCDD, 0x15A2AF0D))
						{
							Store(DerefOf(Index(CMO1, Zero)), BUF0)
							Store(DerefOf(Index(CMO1, One)), BUF1)
							Store(DerefOf(Index(CMO1, 0x02)), BUF2)
							Store(DerefOf(Index(CMO1, 0x03)), BUF3)
							Store(DerefOf(Index(CMO1, 0x04)), BUF4)
							Store(DerefOf(Index(CMO1, 0x05)), BUF5)
							Store(DerefOf(Index(CMO1, 0x06)), BUF6)
							Store(DerefOf(Index(CMO1, 0x07)), BUF7)
							Store(DerefOf(Index(CMO1, 0x08)), BUF8)
							Store(DerefOf(Index(CMO1, 0x09)), BUF9)
							Store(DerefOf(Index(CMO1, 0x0A)), BUFA)
						}
						Else
						{
							Store(DerefOf(Index(LGP1, Zero)), BUF0)
							Store(DerefOf(Index(LGP1, One)), BUF1)
							Store(DerefOf(Index(LGP1, 0x02)), BUF2)
							Store(DerefOf(Index(LGP1, 0x03)), BUF3)
							Store(DerefOf(Index(LGP1, 0x04)), BUF4)
							Store(DerefOf(Index(LGP1, 0x05)), BUF5)
							Store(DerefOf(Index(LGP1, 0x06)), BUF6)
							Store(DerefOf(Index(LGP1, 0x07)), BUF7)
							Store(DerefOf(Index(LGP1, 0x08)), BUF8)
							Store(DerefOf(Index(LGP1, 0x09)), BUF9)
							Store(DerefOf(Index(LGP1, 0x0A)), BUFA)
						}
						Store(^^^GFX0.CBLV, Local1)
						And(Local1, 0xFF, Local0)
						If(LNotEqual(^^^GFX0.BCLP, 0xFF))
						{
							Add(Local0, One, Local0)
						}
						If(LEqual(Local0, BUF0))
						{
							Return(Zero)
						}
						Else
						{
							If(LEqual(Local0, BUF1))
							{
								Return(One)
							}
							Else
							{
								If(LEqual(Local0, BUF2))
								{
									Return(0x02)
								}
								Else
								{
									If(LEqual(Local0, BUF3))
									{
										Return(0x03)
									}
									Else
									{
										If(LEqual(Local0, BUF4))
										{
											Return(0x04)
										}
										Else
										{
											If(LEqual(Local0, BUF5))
											{
												Return(0x05)
											}
											Else
											{
												If(LEqual(Local0, BUF6))
												{
													Return(0x06)
												}
												Else
												{
													If(LEqual(Local0, BUF7))
													{
														Return(0x07)
													}
													Else
													{
														If(LEqual(Local0, BUF8))
														{
															Return(0x08)
														}
														Else
														{
															If(LEqual(Local0, BUF9))
															{
																Return(0x09)
															}
															Else
															{
																If(LEqual(Local0, BUFA))
																{
																	Return(0x0A)
																}
																Else
																{
																	Return(0x0F)
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
				Device(LID)
				{
					Name(_HID, EISAID("PNP0C0D"))
					Name(_PRW, Package(2) {0x1E, 0x03})
					Method(_LID, 0, NotSerialized)
					{
						Store(One, ^^^GFX0.CLID)
						If(^^EC.ECOK)
						{
							Store(^^EC.LDS, Local0)
							If(Local0)
							{
								Notify(PCI0, Zero)
								Return(One)
							}
							Else
							{
								Store(Zero, ^^^GFX0.CLID)
								Return(Zero)
							}
						}
						Else
						{
							Notify(PCI0, Zero)
							Return(One)
						}
					}
					Method(_PSW, 1, NotSerialized)
					{
					}
				}
				Scope(\_SB)
				{
					Device(PWRB)
					{
						Name(_HID, EISAID("PNP0C0C"))
						Name(_PRW, Package(2) {0x1E, 0x04})
						Method(_STA, 0, NotSerialized)
						{
							If(LEqual(ECON, One))
							{
								Return(0x0F)
							}
							Return(Zero)
						}
					}
				}
				Scope(\_SB)
				{
					Device(BAT0)
					{
						Name(_HID, EISAID("PNP0C0A"))
						Name(_UID, Zero)
						Name(_PCL, Package(1) {_SB})
						Name(BIFB, Package(13)
						{
							One, 0x0514, 0x0514, One, 0x2A30, 0x0138, 0x9C, 0x0D, 0x0D, "CA54200",
							"Li4402A", " ", " HP  "
						})
						Name(BSTB, Package(4) {Zero, Ones, Ones, 0x2710})
						Name(MDLS, Package(7) {"Unknown", " 3500", " 3800", " 4500", " 2600", " 3000", " 3200"})
						Name(CHAR, Package(16)
						{
							"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C",
							"D", "E", "F"
						})
						Method(PBFE, 3, NotSerialized)
						{
							CreateByteField(Arg0,Arg1,TIDX)
							Store(Arg2, TIDX)
						}
						Method(ITOS, 1, NotSerialized)
						{
							Store("", Local0)
							Store(0x08, Local1)
							While(Local1)
							{
								Decrement(Local1)
								And(ShiftRight(Arg0, ShiftLeft(Local1, 0x02)), 0x0F, Local4)
								Store(DerefOf(Index(CHAR, Local4)), Local2)
								Concatenate(Local0, Local2, Local5)
								Store(Local5, Local0)
							}
							Return(Local0)
						}
						Method(Z00C, 1, NotSerialized)
						{
							Store("", Local0)
							Store(0x04, Local1)
							While(Local1)
							{
								Decrement(Local1)
								And(ShiftRight(Arg0, ShiftLeft(Local1, 0x02)), 0x0F, Local4)
								Store(DerefOf(Index(CHAR, Local4)), Local2)
								Concatenate(Local0, Local2, Local5)
								Store(Local5, Local0)
							}
							Return(Local0)
						}
						Method(ITSN, 2, NotSerialized)
						{
							Store("", Local0)
							Store(Arg1, Local1)
							While(Local1)
							{
								Decrement(Local1)
								And(ShiftRight(Arg0, ShiftLeft(Local1, 0x02)), 0x0F, Local4)
								Store(DerefOf(Index(CHAR, Local4)), Local2)
								Concatenate(Local0, Local2, Local5)
								Store(Local5, Local0)
							}
							Return(Local0)
						}
						Method(_STA, 0, NotSerialized)
						{
							If(LEqual(^^PCI0.LPCB.EC.ECOK, Zero))
							{
								Return(0x0F)
							}
							Else
							{
								Store(^^PCI0.LPCB.EC.BATP, Local0)
								Or(Local0, Local0, Local0)
								If(Local0)
								{
									Return(0x1F)
								}
								Else
								{
									Return(0x0F)
								}
							}
						}
						Method(_BIF, 0, NotSerialized)
						{
							If(LEqual(^^PCI0.LPCB.EC.ECOK, Zero))
							{
								Store(One, Index(BIFB, Zero))
								Store(0x0514, Index(BIFB, One))
								Store(0x0514, Index(BIFB, 0x02))
								Store(One, Index(BIFB, 0x03))
								Store(0x2A30, Index(BIFB, 0x04))
								Store(0x0138, Index(BIFB, 0x05))
								Store(0x9C, Index(BIFB, 0x06))
								Store(0x0D, Index(BIFB, 0x07))
								Store(0x0D, Index(BIFB, 0x08))
								Store("CA54200", Index(BIFB, 0x09))
								Store("Li4402A", Index(BIFB, 0x0A))
								Store(" ", Index(BIFB, 0x0B))
								Store(" HP  ", Index(BIFB, 0x0C))
							}
							Else
							{
								Store(Zero, Index(BIFB, Zero))
								Store(^^PCI0.LPCB.EC.BDV, Local1)
								Store(^^PCI0.LPCB.EC.BDC, Local0)
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x03E8, Local2, Local0)
								Store(Local0, Index(BIFB, One))
								Store(^^PCI0.LPCB.EC.BFC, Local0)
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x03E8, Local2, Local0)
								Store(Local0, Index(BIFB, 0x02))
								Store(^^PCI0.LPCB.EC.BTEC, Index(BIFB, 0x03))
								Store(^^PCI0.LPCB.EC.BDV, Index(BIFB, 0x04))
								Store(^^PCI0.LPCB.EC.BCW, Local0)
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x03E8, Local2, Local0)
								Store(Local0, Index(BIFB, 0x05))
								Store(^^PCI0.LPCB.EC.BCL, Local0)
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x03E8, Local2, Local0)
								Store(Local0, Index(BIFB, 0x06))
								Store(^^PCI0.LPCB.EC.BFC, Local0)
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x000186A0, Local2, Local0)
								Store(Local0, Index(BIFB, 0x07))
								Store(^^PCI0.LPCB.EC.BFC, Local0)
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x000186A0, Local2, Local0)
								Store(Local0, Index(BIFB, 0x08))
								Store(^^PCI0.LPCB.EC.BMN, Local5)
								And(Local5, 0x0F, Local5)
								If(LGreater(Local5, 0x06))
								{
									Store(DerefOf(Index(MDLS, Zero)), Index(BIFB, 0x09))
								}
								Else
								{
									Store("---------------- NABT < 6 ", Debug)
									Store(^^PCI0.LPCB.EC.BMN, Local5)
									And(Local5, 0x0F, Local5)
									Store(Zero, Local1)
									If(LEqual(Local5, One))
									{
										Store(One, Local1)
									}
									If(LEqual(Local5, 0x04))
									{
										Store(One, Local1)
									}
									Store(^^PCI0.LPCB.EC.BDC, Local0)
									If(LEqual(Local1, One))
									{
										Store("---------------------NiMH battery, NABT =1,4 ", Debug)
										If(LGreaterEqual(Local0, 0x0ED8))
										{
											Store(Z00C(ToBCD(Local0)), Local1)
											Store(Local1, Index(BIFB, 0x09))
											Store("-------------------- DC > 3800 ", Debug)
										}
										Else
										{
											Store("3800", Index(BIFB, 0x09))
											Store("-------------------- DC <= 3800 ", Debug)
										}
										Store(^^PCI0.LPCB.EC.BDC, Local0)
										If(LEqual(Local0, 0x11C6))
										{
											Store("3800", Index(BIFB, 0x09))
											Store("-------------------- DC =4550 ", Debug)
										}
									}
									Else
									{
										Store("---------------- Li Battery ", Debug)
										If(LGreaterEqual(Local0, 0x0BB8))
										{
											Store(Z00C(ToBCD(Local0)), Local1)
											Store(Local1, Index(BIFB, 0x09))
											Store("--------------------- DC >= 3000 ", Debug)
										}
										Else
										{
											Store("2600", Index(BIFB, 0x09))
											Store("--------------------- DC < 3000 ", Debug)
										}
									}
								}
								Store(^^PCI0.LPCB.EC.BSN, Local0)
								Store(^^PCI0.LPCB.EC.BTY, Local0)
								Store(Buffer(0x05){}, Local4)
								PBFE(Local4, Zero, Local0)
								PBFE(Local4, 0x04, Zero)
								Name(Z00D, "xxxxxxxx")
								Store(Local4, Z00D)
								Store("Li", Index(BIFB, 0x0B))
								If(^^PCI0.LPCB.EC.BATP)
								{
									Store(" Hewlett-Packard ", Index(BIFB, 0x0C))
								}
								Else
								{
									Store(" ", Index(BIFB, 0x0C))
								}
								Return(BIFB)
							}
							Return(BIFB)
						}
						Method(_BST, 0, NotSerialized)
						{
							If(^^PCI0.LPCB.EC.ECOK)
							{
								UBST()
							}
							Return(BSTB)
						}
						Name(CRIT, Zero)
						Method(UBST, 0, NotSerialized)
						{
							Store(^^PCI0.LPCB.EC.BST, Index(BSTB, Zero))
							Store(^^PCI0.LPCB.EC.BPR, Local0)
							Store(^^PCI0.LPCB.EC.BDV, Local1)
							If(LGreaterEqual(Local0, 0x8000))
							{
								Subtract(0x00010000, Local0, Local0)
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x03E8, Local2, Local0)
							}
							Else
							{
								Multiply(Local0, Local1, Local0)
								Divide(Local0, 0x03E8, Local2, Local0)
							}
							Store(Local0, Index(BSTB, One))
							Store(^^PCI0.LPCB.EC.BFC, Local0)
							Multiply(Local0, Local1, Local0)
							Divide(Local0, 0x03E8, Local2, Local0)
							Store(^^PCI0.LPCB.EC.BPP, Local2)
							Multiply(Local0, Local2, Local0)
							Divide(Local0, 0x64, Local2, Local0)
							Add(Local0, One, Local0)
							Store(Local0, Index(BSTB, 0x02))
							Store(^^PCI0.LPCB.EC.BPV, Index(BSTB, 0x03))
							Store(DerefOf(Index(BSTB, Zero)), Local0)
							If(^^PCI0.LPCB.EC.ECOK)
							{
								Store(^^PCI0.LPCB.EC.BCCL, Local1)
							}
							And(Local0, 0xFFFB, Local0)
							ShiftLeft(Local1, 0x02, Local1)
							Add(Local0, Local1, Local0)
							Store(Local0, Index(BSTB, Zero))
						}
						Method(INUT, 0, NotSerialized)
						{
							If(^^PCI0.LPCB.EC.ECOK)
							{
								If(LEqual(_STA(), 0x1F))
								{
									UBST()
									_BIF()
									Sleep(0x01F4)
									Notify(AC, Zero)
									Notify(BAT0, Zero)
									Notify(BAT0, 0x80)
									Notify(BAT0, 0x81)
								}
								Else
								{
									UBST()
									Notify(AC, Zero)
									Notify(BAT0, Zero)
									Notify(BAT0, 0x80)
									Notify(BAT0, 0x81)
								}
								^^AC.FLPA()
							}
						}
					}
					Device(AC)
					{
						Name(_HID, "ACPI0003")
						Name(_PCL, Package(1) {_SB})
						Name(ACP, Zero)
						Method(_STA, 0, NotSerialized)
						{
							Store("---------------------------- AC _STA", Debug)
							Return(0x0F)
						}
						Method(_PSR, 0, NotSerialized)
						{
							Store("---------------------------- AC _PSR", Debug)
							Store(ACP, Local0)
							If(^^PCI0.LPCB.EC.ECOK)
							{
								Store(^^PCI0.LPCB.EC.ADP, Local0)
								If(LNotEqual(Local0, ACP))
								{
									FLPA()
								}
							}
							If(Local0)
							{
								Store("---------------------------- AC on line", Debug)
							}
							Else
							{
								Store("---------------------------- AC off line", Debug)
							}
							Return(Local0)
						}
						Method(CHAC, 0, NotSerialized)
						{
							Store("---------------------------- AC _CHAC", Debug)
							If(^^PCI0.LPCB.EC.ECOK)
							{
								Store(^^PCI0.LPCB.EC.ADP, Local0)
								If(LNotEqual(Local0, ACP))
								{
									FLPA()
								}
							}
						}
						Method(FLPA, 0, NotSerialized)
						{
							Store("---------------------------- AC _FLPA", Debug)
							If(ACP)
							{
								Store(Zero, ACP)
							}
							Else
							{
								Store(One, ACP)
							}
							Notify(AC, Zero)
						}
					}
					Device(ACEL)
					{
						Name(_HID, 0x04001122)
						Name(DEPT, 0xFF)
						Name(CTST, 0xFF)
						Name(_CRS, ResourceTemplate()
						{
							Interrupt(ResourceConsumer, Edge, ActiveLow, Exclusive)
							{
								0x00000017
							}
						})
						Method(_STA, 0, NotSerialized)
						{
							If(GSEN)
							{
								Store(0x0F, DEPT)
							}
							Else
							{
								Store(Zero, DEPT)
							}
							Return(DEPT)
						}
						Method(AJAL, 0, Serialized)
						{
							If(^^PCI0.LPCB.EC.ECOK)
							{
								If(_STA())
								{
									Store(^^PCI0.LPCB.EC.ADP, Local0)
									If(LAnd(LEqual(^^PCI0.LPCB.EC.LDS, Zero), LEqual(Local0, Zero))) {}
									Else {}
								}
							}
						}
						Method(CLRI, 0, Serialized)
						{
							Store(Zero, Local2)
							If(LEqual(^^PCI0.LPCB.EC.ADP, Zero))
							{
								Store(0x04, Local0)
								If(LEqual(^^BAT0._STA(), 0x1F))
								{
									Store(One, Local0)
								}
								If(And(Local0, 0x04))
								{
									Store(One, Local2)
								}
							}
							Return(Local2)
						}
						Method(ALRD, 1, NotSerialized)
						{
							Store(^^PCI0.LPCB.EC.ESBR(0x07, 0x3A, Arg0), Local1)
							Store(DerefOf(Index(Local1, 0x02)), Local0)
							Return(Local0)
						}
						Method(ALWR, 2, NotSerialized)
						{
							Store(^^PCI0.LPCB.EC.ESBW(0x06, 0x3A, Arg0, One, Arg1), Local0)
							Return(Local0)
						}
						Method(ALID, 1, NotSerialized)
						{
							Return(^^PCI0.LPCB.EC.LDS)
						}
						Method(ALED, 1, NotSerialized)
						{
							If(Arg0)
							{
								Store(One, ^^PCI0.LPCB.EC.GLD)
							}
							Else
							{
								Store(Zero, ^^PCI0.LPCB.EC.GLD)
							}
						}
						Method(ADSN, 0, NotSerialized)
						{
							Store(Zero, Local0)
							Return(Local0)
						}
					}
				}
				Device(DMAC)
				{
					Name(_HID, EISAID("PNP0200"))
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x0000, 0x0000, 0x01, 0x20)
						IO(Decode16, 0x0081, 0x0081, 0x01, 0x11)
						IO(Decode16, 0x0093, 0x0093, 0x01, 0x0D)
						IO(Decode16, 0x00C0, 0x00C0, 0x01, 0x20)
						DMA(Compatibility, NotBusMaster, Transfer8_16) {4}
					})
				}
				Device(FWHD)
				{
					Name(_HID, 0x0008D425)
					Name(_CRS, ResourceTemplate()
					{
						Memory32Fixed(ReadOnly, 0xFF000000, 0x01000000)
					})
				}
				Device(HPET)
				{
					Name(_HID, EISAID("PNP0103"))
					Name(_UID, Zero)
					Name(BUF0, ResourceTemplate()
					{
						Memory32Fixed(ReadWrite, 0xFED00000, 0x00000400)
					})
					Method(_STA, 0, NotSerialized)
					{
						If(LGreaterEqual(OSYS, 0x07D1))
						{
							If(HPAE)
							{
								Return(0x0F)
							}
						}
						Else
						{
							If(HPAE)
							{
								Return(0x0B)
							}
						}
						Return(Zero)
					}
					Method(_CRS, 0, Serialized)
					{
						If(HPAE)
						{
							CreateDWordField(BUF0, 0x04, HPT0)
							If(LEqual(HPAS, One))
							{
								Store(0xFED01000, HPT0)
							}
							If(LEqual(HPAS, 0x02))
							{
								Store(0xFED02000, HPT0)
							}
							If(LEqual(HPAS, 0x03))
							{
								Store(0xFED03000, HPT0)
							}
						}
						Return(BUF0)
					}
				}
				Device(IPIC)
				{
					Name(_HID, EISAID("PNP0000"))
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x0020, 0x0020, 0x01, 0x02)
						IO(Decode16, 0x0024, 0x0024, 0x01, 0x02)
						IO(Decode16, 0x0028, 0x0028, 0x01, 0x02)
						IO(Decode16, 0x002C, 0x002C, 0x01, 0x02)
						IO(Decode16, 0x0030, 0x0030, 0x01, 0x02)
						IO(Decode16, 0x0034, 0x0034, 0x01, 0x02)
						IO(Decode16, 0x0038, 0x0038, 0x01, 0x02)
						IO(Decode16, 0x003C, 0x003C, 0x01, 0x02)
						IO(Decode16, 0x00A0, 0x00A0, 0x01, 0x02)
						IO(Decode16, 0x00A4, 0x00A4, 0x01, 0x02)
						IO(Decode16, 0x00A8, 0x00A8, 0x01, 0x02)
						IO(Decode16, 0x00AC, 0x00AC, 0x01, 0x02)
						IO(Decode16, 0x00B0, 0x00B0, 0x01, 0x02)
						IO(Decode16, 0x00B4, 0x00B4, 0x01, 0x02)
						IO(Decode16, 0x00B8, 0x00B8, 0x01, 0x02)
						IO(Decode16, 0x00BC, 0x00BC, 0x01, 0x02)
						IO(Decode16, 0x04D0, 0x04D0, 0x01, 0x02)
						IRQNoFlags() {2}
					})
				}
				Device(MATH)
				{
					Name(_HID, EISAID("PNP0C04"))
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x00F0, 0x00F0, 0x01, 0x01)
						IRQNoFlags() {13}
					})
				}
				Device(LDRC)
				{
					Name(_HID, EISAID("PNP0C02"))
					Name(_UID, 0x02)
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x002E, 0x002E, 0x01, 0x02)
						IO(Decode16, 0x004E, 0x004E, 0x01, 0x02)
						IO(Decode16, 0x0061, 0x0061, 0x01, 0x01)
						IO(Decode16, 0x0063, 0x0063, 0x01, 0x01)
						IO(Decode16, 0x0065, 0x0065, 0x01, 0x01)
						IO(Decode16, 0x0067, 0x0067, 0x01, 0x01)
						IO(Decode16, 0x0070, 0x0070, 0x01, 0x01)
						IO(Decode16, 0x0080, 0x0080, 0x01, 0x01)
						IO(Decode16, 0x0092, 0x0092, 0x01, 0x01)
						IO(Decode16, 0x00B2, 0x00B2, 0x01, 0x02)
						IO(Decode16, 0x0680, 0x0680, 0x01, 0x20)
						IO(Decode16, 0x1000, 0x1000, 0x01, 0x10)
						IO(Decode16, 0x1010, 0x1010, 0x01, 0x04)
						IO(Decode16, 0xFFFF, 0xFFFF, 0x01, 0x01)
						IO(Decode16, 0x0400, 0x0400, 0x01, 0x54)
						IO(Decode16, 0x0458, 0x0458, 0x01, 0x28)
						IO(Decode16, 0x0500, 0x0500, 0x01, 0x80)
						IO(Decode16, 0x164E, 0x164E, 0x01, 0x02)
					})
				}
				Device(RTC)
				{
					Name(_HID, EISAID("PNP0B00"))
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x0070, 0x0070, 0x01, 0x08)
						IRQNoFlags() {8}
					})
				}
				Device(TIMR)
				{
					Name(_HID, EISAID("PNP0100"))
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x0040, 0x0040, 0x01, 0x04)
						IO(Decode16, 0x0050, 0x0050, 0x10, 0x04)
						IRQNoFlags() {0}
					})
				}
				Device(CWDT)
				{
					Name(_HID, 0x0D3FD425)
					Name(_CID, EISAID("PNP0C02"))
					Name(BUF0, ResourceTemplate()
					{
						IO(Decode16, 0x0454, 0x0454, 0x04, 0x04)
					})
					Method(_STA, 0, Serialized)
					{
						Return(0x0F)
					}
					Method(_CRS, 0, Serialized)
					{
						Return(BUF0)
					}
				}
				OperationRegion(PKBS, SystemIO, 0x60, 0x05)
				Field(PKBS, ByteAcc, Lock, Preserve)
				{
					PKBD, 8,
					, 8,
					, 8,
					, 8,
					PKBC, 8,
				}
				Device(PS2K)
				{
					Name(_HID, EISAID("PNP0303"))
					Method(_STA, 0, NotSerialized)
					{
						If(And(LEqual(PKBD, 0xFF), LEqual(PKBC, 0xFF)))
						{
							Return(Zero)
						}
						Return(0x0F)
					}
					Name(_CRS, ResourceTemplate()
					{
						IO(Decode16, 0x0060, 0x0060, 0x01, 0x01)
						IO(Decode16, 0x0064, 0x0064, 0x01, 0x01)
						IRQ(Edge, ActiveHigh, Exclusive) {1}
					})
					Name(_PRS, ResourceTemplate()
					{
						StartDependentFn(0, 0)
						{
							FixedIO(0x0060, 0x01)
							FixedIO(0x0064, 0x01)
							IRQNoFlags() {1}
						}
						EndDependentFn()
					})
				}
				Device(PS2M)
				{
					Name(_HID, 0x471E2E4F)
					Name(_CID, Package(3) {0x001E2E4F, 0x02002E4F, EISAID("PNP0F13")})
					Method(_STA, 0, NotSerialized)
					{
						If(And(LEqual(PKBD, 0xFF), LEqual(PKBC, 0xFF)))
						{
							Return(Zero)
						}
						Return(0x0F)
					}
					Name(_CRS, ResourceTemplate()
					{
						IRQ(Edge, ActiveHigh, Exclusive) {12}
					})
					Name(_PRS, ResourceTemplate()
					{
						StartDependentFn(0, 0)
						{
							IRQNoFlags() {12}
						}
						EndDependentFn()
					})
				}
			}
		}
		Device(WMID)
		{
			Method(CSTA, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(One, IAOR)
				Store(0xC1, SSMP)
				If(LEqual(IAOR, One))
				{
					Store(0x1C, Index(Local0, Zero))
				}
				Else
				{
					Store(IAOR, Index(Local0, Zero))
					Store(And(CDAT, 0xFF), Index(DerefOf(Index(Local0, 0x02)), Zero))
				}
				Return(Local0)
			}
			Method(CACT, 1, NotSerialized)
			{
				Store(Package(2) {Zero, Zero}, Local0)
				Store(0x02, IAOR)
				Store(Arg0, CDAT)
				Store(0xC1, SSMP)
				If(LEqual(IAOR, 0x02))
				{
					Store(0x1C, Index(Local0, Zero))
				}
				Else
				{
					Store(IAOR, Index(Local0, Zero))
				}
				Store(Zero, CDAT)
				Return(Local0)
			}
			Method(CDAC, 1, NotSerialized)
			{
				Store(Package(2) {Zero, Zero}, Local0)
				Store(0x03, IAOR)
				Store(Arg0, CDAT)
				Store(0xC1, SSMP)
				If(LEqual(IAOR, 0x03))
				{
					Store(0x1C, Index(Local0, Zero))
				}
				Else
				{
					Store(IAOR, Index(Local0, Zero))
				}
				Store(Zero, CDAT)
				Return(Local0)
			}
			Method(HDWC, 2, NotSerialized)
			{
				CreateDWordField(Arg1, 0x04, WMI7)
				CreateDWordField(Arg1, 0x08, WMI8)
				CreateDWordField(Arg1, 0x0C, WMI9)
				If(LEqual(Arg0, One))
				{
					Store(Zero, Local0)
				}
				If(LEqual(Arg0, 0x02))
				{
					Store(0x04, Local0)
				}
				If(LEqual(Arg0, 0x03))
				{
					Store(0x80, Local0)
				}
				If(LEqual(Arg0, 0x04))
				{
					Store(0x0400, Local0)
				}
				If(LEqual(Arg0, 0x05))
				{
					Store(0x1000, Local0)
				}
				Store(Buffer(Add(0x08, Local0)){}, Local1)
				CreateDWordField(Local1, Zero, WMIA)
				CreateDWordField(Local1, 0x04, WMIB)
				Store(0x4C494146, WMIA)
				Store(0x02, WMIB)
				Store(0x03, WMIB)
				If(LEqual(WMI7, One))
				{
					Store(0x04, WMIB)
					If(LEqual(WMI8, 0x07))
					{
						If(WMI9)
						{
							Store(DerefOf(Index(Arg1, 0x10)), Local3)
							Store(GTBI(Local3), Local2)
							Store(Zero, WMIB)
						}
						Else
						{
							Store(0x05, WMIB)
						}
					}
					If(LEqual(WMI8, 0x08))
					{
						Store(BBHT(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x09))
					{
						Store(WKHC(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x0A))
					{
						Store(WKHF(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x0B))
					{
						Store(BEBA(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x0C))
					{
						Store(WKLB(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x0D))
					{
						Store(FRPT(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x0F))
					{
						Store(WMSA(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x10))
					{
						Store(GHPI(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x14))
					{
						Store(WPTG(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x1B))
					{
						Store(GWDI(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x1D))
					{
						Store(GDLC(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x1E))
					{
						Store(GBUS(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x1F))
					{
						Store(WMBG(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x26))
					{
						Store(GROC(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x28))
					{
						CreateDWordField(Arg1, 0x10, DAIN)
						Store(GTDC(DAIN), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x29))
					{
						Store(GFCC(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x2A))
					{
						Store(GPES(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x2B))
					{
						Store(GBCO(), Local2)
						Store(Zero, WMIB)
					}
					If(LEqual(WMI8, 0x2C))
					{
						Store(GTCS(), Local2)
						Store(Zero, WMIB)
					}
				}
				If(LEqual(WMI7, 0x02))
				{
					Store(0x04, WMIB)
					If(LAnd(LGreater(WMI8, Zero), LLessEqual(WMI8, 0x32)))
					{
						If(LLess(WMI9, DerefOf(Index(WMI4, Subtract(WMI8, One)))))
						{
							Store(0x05, WMIB)
						}
						Else
						{
							CreateDWordField(Arg1, 0x10, WMIL)
							If(LEqual(WMI8, 0x09))
							{
								Store(WMIN(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x0A))
							{
								Store(WMIO(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x10))
							{
								Store(WWAR(Arg1), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x14))
							{
								Store(WPTS(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x1B))
							{
								Store(SWDS(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x1D))
							{
								Store(SDLC(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x1E))
							{
								Store(SBUS(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x1F))
							{
								Store(Package(3) {Zero, Zero, Zero}, Local2)
								Store(WMSG(WMIL), Index(Local2, Zero))
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x28))
							{
								Store(STDC(Arg1), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x29))
							{
								Store(SFCC(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x2A))
							{
								Store(SPES(WMIL), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x2B))
							{
								Store(Package(3) {Zero, Zero, Zero}, Local2)
								Store(SBCO(WMIL), Index(Local2, Zero))
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x2C))
							{
								Store(STCS(WMIL), Local2)
								Store(Zero, WMIB)
							}
						}
					}
				}
				If(LEqual(WMI7, 0x00020002))
				{
					Store(0x04, WMIB)
					If(LAnd(LGreater(WMI8, Zero), LLessEqual(WMI8, 0x03)))
					{
						If(LLess(WMI9, DerefOf(Index(WMI5, Subtract(WMI8, One)))))
						{
							Store(0x05, WMIB)
						}
						Else
						{
							CreateDWordField(Arg1, 0x10, WMCT)
							If(LEqual(WMI8, One))
							{
								Store(Package(3)
								{
									Zero, 
									0x04, 
									Buffer(0x04)
									{
										0x00, 0x00, 0x00, 0x00
									}
								}, Local2)
								Store(CSTA(), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x02))
							{
								Store(Package(3) {Zero, Zero, Zero}, Local2)
								Store(IAOR, Index(Local2, Zero))
								Store(CACT(WMCT), Local2)
								Store(Zero, WMIB)
							}
							If(LEqual(WMI8, 0x03))
							{
								Store(Package(3) {Zero, Zero, Zero}, Local2)
								Store(CDAC(WMCT), Local2)
								Store(Zero, WMIB)
							}
						}
					}
				}
				If(LEqual(WMIB, Zero))
				{
					Store(DerefOf(Index(Local2, Zero)), WMIB)
					If(LEqual(WMIB, Zero))
					{
						If(LLessEqual(DerefOf(Index(Local2, One)), Local0))
						{
							Store(Zero, Local0)
							While(LLess(Local0, DerefOf(Index(Local2, One))))
							{
								Store(DerefOf(Index(DerefOf(Index(Local2, 0x02)), Local0)), Index(Local1, Add(Local0, 0x08)))
								Increment(Local0)
							}
							Store(0x53534150, WMIA)
						}
						Else
						{
							Store(0x05, WMIB)
						}
					}
				}
				Return(Local1)
			}
			Name(WMI4, Package(50)
			{
				0x04, 0x04, 0x04, Zero, 0x04, 0x04, Zero, Zero, 0x04, 0x04, 0x0C,
				Zero, Zero, Zero, Zero, 0x08, Zero, Zero, 0x04, Zero, Zero, Zero,
				Zero, Zero, Zero, Zero, Zero, Zero, 0x04, 0x04, 0x04, Zero, Zero,
				0x04, Zero, 0x04, Zero, Zero, Zero, Zero, 0x04, 0x04, 0x04, 0x04,
				Zero, Zero, Zero, Zero, Zero, Zero
			})
			Name(WMI5, Package(3) {Zero, 0x04, 0x04})
			Name(_HID, "PNP0C14")
			Name(_UID, Zero)
			Name(WMIU, Zero)
			Name(WMIV, Zero)
			Name(ETYP, Buffer(One){})
			Name(S001, Buffer(0x32){})
			Name(BF2S, "                                                                                             ")
			Name(EVNT, Package(3)
			{
				Package(5) {"BIOS Configuration Change", "BIOS Settings", 0x04, 0x05, 0x02}, 
				Package(5)
				{
					"BIOS Configuration Security", "An attempt has been made to Access BIOS features unsuccessfully",
					0x04, 0x0A, 0x06
				}, 
				Package(5) {"Unknown Event", "Unknown event type", Zero, Zero, Zero}
			})
			Name(WMIY, Zero)
			Name(WMIZ, Zero)
			Name(WEVT, Zero)
			Name(WMBF, Buffer(0x80){})
			CreateByteField(WMBF,Zero,WB00)
			Name(BUFF, Buffer(0x04)
			{
				0x00, 0x00, 0x00, 0x00
			})
			CreateByteField(BUFF,Zero,OB0)
			CreateByteField(BUFF,One,OB1)
			CreateByteField(BUFF,0x02,OB2)
			CreateByteField(BUFF,0x03,OB3)
			CreateBitField(BUFF,Zero,OB00)
			CreateBitField(BUFF,One,OB01)
			CreateBitField(BUFF,0x02,OB02)
			CreateBitField(BUFF,0x03,OB03)
			CreateBitField(BUFF,0x04,OB04)
			CreateBitField(BUFF,0x05,OB05)
			CreateBitField(BUFF,0x06,OB06)
			CreateBitField(BUFF,0x07,OB07)
			CreateBitField(BUFF,0x08,OB10)
			CreateBitField(BUFF,0x09,OB11)
			CreateBitField(BUFF,0x0A,OB12)
			CreateBitField(BUFF,0x0B,OB13)
			CreateBitField(BUFF,0x0C,OB14)
			CreateBitField(BUFF,0x10,OB20)
			CreateBitField(BUFF,0x11,OB21)
			CreateBitField(BUFF,0x12,OB22)
			CreateBitField(BUFF,0x13,OB23)
			CreateBitField(BUFF,0x18,OB30)
			CreateBitField(BUFF,0x19,OB31)
			CreateBitField(BUFF,0x1A,OB32)
			CreateBitField(BUFF,0x1B,OB33)
			CreateBitField(BUFF,0x1C,OB34)
			CreateBitField(BUFF,0x1D,OB35)
			CreateBitField(BUFF,0x1E,OB36)
			CreateBitField(BUFF,0x1F,OB37)
			Name(_WDG, Buffer(0x50)
			{
				0x34, 0xF0, 0xB7, 0x5F, 0x63, 0x2C, 0xE9, 0x45, 
				0xBE, 0x91, 0x3D, 0x44, 0xE2, 0xC7, 0x07, 0xE4, 
				0x41, 0x44, 0x01, 0x02, 0x79, 0x42, 0xF2, 0x95, 
				0x7B, 0x4D, 0x34, 0x43, 0x93, 0x87, 0xAC, 0xCD, 
				0xC6, 0x7E, 0xF6, 0x1C, 0x80, 0x00, 0x01, 0x08, 
				0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11, 
				0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10, 
				0x41, 0x45, 0x01, 0x00, 0xD4, 0x2B, 0x99, 0xD0, 
				0x7C, 0xA4, 0xFE, 0x4E, 0xB0, 0x72, 0x32, 0x4A, 
				0xEC, 0x92, 0x29, 0x6C, 0x42, 0x43, 0x01, 0x00
			})
			Method(WMAD, 3, Serialized)
			{
				Store(HDWC(Arg1, Arg2), Local0)
				Return(Local0)
			}
			Method(GTBI, 1, NotSerialized)
			{
				Store("HP WMI Command 0x7 (BIOS Read)", Debug)
				If(Arg0)
				{
					Store(Package(2) {0x06, Zero}, Local0)
					Sleep(0x96)
					Return(Local0)
				}
				If(^^PCI0.LPCB.EC.BATP)
				{
					Store(Package(3)
					{
						Zero, 
						0x80, 
						Buffer(0x80){}
					}, Local0)
					Store(^^PCI0.LPCB.EC.BDC, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), One))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), Zero))
					Store(^^PCI0.LPCB.EC.BFC, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x03))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x02))
					Store(^^PCI0.LPCB.EC.BFC, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x05))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x04))
					Store(^^PCI0.LPCB.EC.BTT, Local1)
					Subtract(Local1, 0x0AAA, Local1)
					Divide(Local1, 0x0A, Local2, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x0B))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x0A))
					Store(^^PCI0.LPCB.EC.BPV, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x0D))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x0C))
					Store(^^PCI0.LPCB.EC.BPR, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x0F))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x0E))
					Store(^^PCI0.LPCB.EC.BDV, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x11))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x10))
					Store(^^PCI0.LPCB.EC.BST, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x13))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x12))
					Store(^^PCI0.LPCB.EC.BC1, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x15))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x14))
					Store(^^PCI0.LPCB.EC.BC2, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x17))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x16))
					Store(^^PCI0.LPCB.EC.BC3, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x19))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x18))
					Store(^^PCI0.LPCB.EC.BC4, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x1B))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x1A))
					Store(^^BAT0.ITSN(ToBCD(^^PCI0.LPCB.EC.BSN), 0x05), Local1)
					Concatenate(Local1, " ", Local4)
					Store(^^PCI0.LPCB.EC.BMD, Local1)
					And(Local1, 0xFF, Local2)
					And(Local1, 0xFF00, Local3)
					ShiftLeft(Local2, 0x08, Local2)
					ShiftRight(Local3, 0x08, Local3)
					Or(Local2, Local3, Local1)
					And(Local1, 0x01E0, Local2)
					ShiftRight(Local2, 0x05, Local2)
					Store(^^BAT0.ITSN(ToBCD(Local2), 0x02), Local2)
					Concatenate(Local4, Local2, Local3)
					Concatenate(Local3, "/", Local4)
					And(Local1, 0x1F, Local2)
					Store(^^BAT0.ITSN(ToBCD(Local2), 0x02), Local2)
					Concatenate(Local4, Local2, Local3)
					Concatenate(Local3, "/", Local4)
					And(Local1, 0xFE00, Local2)
					ShiftRight(Local2, 0x09, Local2)
					Add(Local2, 0x07BC, Local2)
					Store(^^BAT0.ITSN(ToBCD(Local2), 0x04), Local2)
					Concatenate(Local4, Local2, Local3)
					Name(SNUM, Buffer(0x10){})
					Store(Local3, SNUM)
					Store(SNUM, Local3)
					Store(0x1C, Local2)
					Store(Zero, Local4)
					Store(0x10, Local1)
					While(Local1)
					{
						Store(DerefOf(Index(Local3, Local4)), Local5)
						^^BAT0.PBFE(DerefOf(Index(Local0, 0x02)), Local2, Local5)
						Decrement(Local1)
						Increment(Local2)
						Increment(Local4)
					}
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Local2))
					Store(Buffer(0x10)
					{
						0x48, 0x65, 0x77, 0x6C, 0x65, 0x74, 0x74, 0x2D, 
						0x50, 0x61, 0x63, 0x6B, 0x61, 0x72, 0x64, 0x00
					}, Local3)
					Store(^^PCI0.LPCB.EC.BTN, Local3)
					Store(0x2C, Local2)
					Store(Zero, Local4)
					Store(0x08, Local1)
					While(Local1)
					{
						Store(DerefOf(Index(Local3, Local4)), Local5)
						^^BAT0.PBFE(DerefOf(Index(Local0, 0x02)), Local2, Local5)
						Decrement(Local1)
						Increment(Local2)
						Increment(Local4)
					}
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Local2))
					Store(^^PCI0.LPCB.EC.CTL, Local3)
					Store(0x3E, Local2)
					Store(Zero, Local4)
					Store(0x0F, Local1)
					While(Local1)
					{
						Store(DerefOf(Index(Local3, Local4)), Local5)
						Store(Local5, Index(DerefOf(Index(Local0, 0x02)), Local2))
						Decrement(Local1)
						Increment(Local2)
						Increment(Local4)
					}
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Local2))
					Store(^^PCI0.LPCB.EC.BDNB, Local3)
					Store(0x4F, Local2)
					Store(Zero, Local4)
					Store(0x07, Local1)
					While(Local1)
					{
						Store(DerefOf(Index(Local3, Local4)), Local5)
						Store(Local5, Index(DerefOf(Index(Local0, 0x02)), Local2))
						Decrement(Local1)
						Increment(Local2)
						Increment(Local4)
					}
					Store(Buffer(0x05)
					{
						0x4C, 0x49, 0x4F, 0x4E, 0x00
					}, Local3)
					Store(0x56, Local2)
					Store(Zero, Local4)
					Store(0x04, Local1)
					While(Local1)
					{
						Store(DerefOf(Index(Local3, Local4)), Local5)
						Store(Local5, Index(DerefOf(Index(Local0, 0x02)), Local2))
						Decrement(Local1)
						Increment(Local2)
						Increment(Local4)
					}
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x5A))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x5B))
					Store(^^PCI0.LPCB.EC.BMD, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x5D))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x5C))
					Store(^^PCI0.LPCB.EC.CHGC, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x5F))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x5E))
					Store(^^PCI0.LPCB.EC.CHGV, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x61))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x60))
					Store(^^PCI0.LPCB.EC.AVGC, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x63))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x62))
					Store(^^PCI0.LPCB.EC.RTTE, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x65))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x64))
					Store(^^PCI0.LPCB.EC.ATTE, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x67))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x66))
					Store(^^PCI0.LPCB.EC.ATTF, Local1)
					Divide(Local1, 0x0100, Local2, Index(DerefOf(Index(Local0, 0x02)), 0x69))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x68))
					Store(One, Index(DerefOf(Index(Local0, 0x02)), 0x6A))
				}
				Else
				{
					Store(Package(2) {0x06, Zero}, Local0)
					Sleep(0x96)
				}
				Return(Local0)
			}
			Method(BBHT, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x80, 
					Buffer(0x80){}
				}, Local0)
				CBHB(Zero, 0x0131)
				CBHB(0x02, 0x01AE)
				CBHB(0x04, 0x01B6)
				CBHB(0x06, 0x01B7)
				CBHB(0x08, 0x0265)
				CBHB(0x0A, 0x0267)
				CBHB(0x0C, 0x0268)
				CBHB(0x0E, 0x026A)
				CBHB(0x10, 0x026B)
				CBHB(0x12, 0x026C)
				CBHB(0x14, 0xFFFF)
				CBHB(0x16, 0x21A9)
				CBHB(0x18, Zero)
				Store(BFHT, Index(Local0, 0x02))
				Return(Local0)
			}
			Name(BFHT, Buffer(0x80){})
			Method(CBHB, 2, NotSerialized)
			{
				CreateWordField(BFHT, Arg0, PIO0)
				Store(Arg1, PIO0)
			}
			Method(WKHC, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				If(^^PCI0.LPCB.EC.ECOK)
				{
					Store(^^PCI0.LPCB.EC.QLB, Local1)
					If(Local1)
					{
						Store(0x6E, Index(DerefOf(Index(Local0, 0x02)), Zero))
					}
					Else
					{
						Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Zero))
					}
				}
				Else
				{
					Store(Package(2) {0x0D, Zero}, Local0)
				}
				Return(Local0)
			}
			Method(WMIN, 1, NotSerialized)
			{
				If(^^PCI0.LPCB.EC.ECOK)
				{
					If(LEqual(Arg0, 0x6E))
					{
						Store(One, ^^PCI0.LPCB.EC.QLB)
						Return(Package(2) {Zero, Zero})
					}
					If(LEqual(Arg0, Zero))
					{
						Store(Zero, ^^PCI0.LPCB.EC.QLB)
						Return(Package(2) {Zero, Zero})
					}
					Return(Package(2) {0x06, Zero})
				}
				Else
				{
					Return(Package(2) {0x0D, Zero})
				}
			}
			Method(WKHF, 0, NotSerialized)
			{
				If(^^PCI0.LPCB.EC.ECOK)
				{
					Store(Package(3)
					{
						Zero, 
						0x04, 
						Buffer(0x04)
						{
							0x00, 0x00, 0x00, 0x00
						}
					}, Local0)
					Store(^^PCI0.LPCB.EC.QKL, Index(DerefOf(Index(Local0, 0x02)), Zero))
					Store(^^PCI0.LPCB.EC.QKH, Index(DerefOf(Index(Local0, 0x02)), One))
					Store(^^PCI0.LPCB.EC.QKH, Local1)
					Store(^^PCI0.LPCB.EC.QKL, Local2)
					If(LAnd(LEqual(Local2, 0xB7), LEqual(Local1, One)))
					{
						If(LEqual(^^PCI0.LPCB.EC.ADP, One))
						{
							Store(^^PCI0.LPCB.EC.LCBA, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Else
						{
							Store(^^PCI0.LPCB.EC.LCBD, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Store(0x0A, Index(DerefOf(Index(Local0, 0x02)), 0x03))
						^^PCI0.LPCB.EC.STBL()
					}
					If(LAnd(LEqual(Local2, 0xB6), LEqual(Local1, One)))
					{
						If(LEqual(^^PCI0.LPCB.EC.ADP, One))
						{
							Store(^^PCI0.LPCB.EC.LCBA, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Else
						{
							Store(^^PCI0.LPCB.EC.LCBD, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Store(0x0A, Index(DerefOf(Index(Local0, 0x02)), 0x03))
						^^PCI0.LPCB.EC.STBL()
					}
					If(LAnd(LEqual(Local2, 0xAE), LEqual(Local1, One)))
					{
						Store(Zero, Local1)
						Store(Package(8){}, Local2)
						Store(^^PCI0.GFX0.CADL, Index(Local2, Zero))
						Store(^^PCI0.GFX0.CAL2, Index(Local2, One))
						Store(^^PCI0.GFX0.CAL3, Index(Local2, 0x02))
						Store(^^PCI0.GFX0.CAL4, Index(Local2, 0x03))
						Store(^^PCI0.GFX0.CAL5, Index(Local2, 0x04))
						Store(^^PCI0.GFX0.CAL6, Index(Local2, 0x05))
						Store(^^PCI0.GFX0.CAL7, Index(Local2, 0x06))
						Store(^^PCI0.GFX0.CAL8, Index(Local2, 0x07))
						Store(Zero, Local3)
						Store(DerefOf(Index(Local2, Local3)), Local4)
						While(LAnd(LLess(Local3, 0x08), LNotEqual(Local4, Zero)))
						{
							And(ShiftRight(Local4, 0x08), 0x0F, Local4)
							If(LEqual(Local4, 0x04))
							{
								Or(Local1, One, Local1)
							}
							Else
							{
								If(LEqual(Local4, One))
								{
									Or(Local1, 0x02, Local1)
								}
								Else
								{
									If(LEqual(Local4, 0x02))
									{
										Or(Local1, 0x04, Local1)
									}
									Else
									{
										If(LEqual(Local4, 0x03))
										{
											Or(Local1, 0x10, Local1)
										}
									}
								}
							}
							Increment(Local3)
							Store(DerefOf(Index(Local2, Local3)), Local4)
						}
						Store(Local1, Index(DerefOf(Index(Local0, 0x02)), 0x03))
						Store(Zero, Local1)
						Store(Package(8){}, Local2)
						Store(^^PCI0.GFX0.NADL, Index(Local2, Zero))
						Store(^^PCI0.GFX0.NDL2, Index(Local2, One))
						Store(^^PCI0.GFX0.NDL3, Index(Local2, 0x02))
						Store(^^PCI0.GFX0.NDL4, Index(Local2, 0x03))
						Store(^^PCI0.GFX0.NDL5, Index(Local2, 0x04))
						Store(^^PCI0.GFX0.NDL6, Index(Local2, 0x05))
						Store(^^PCI0.GFX0.NDL7, Index(Local2, 0x06))
						Store(^^PCI0.GFX0.NDL8, Index(Local2, 0x07))
						Store(Zero, Local3)
						Store(DerefOf(Index(Local2, Local3)), Local4)
						While(LAnd(LLess(Local3, 0x08), LNotEqual(Local4, Zero)))
						{
							And(ShiftRight(Local4, 0x08), 0x0F, Local4)
							If(LEqual(Local4, 0x04))
							{
								Or(Local1, One, Local1)
							}
							Else
							{
								If(LEqual(Local4, One))
								{
									Or(Local1, 0x02, Local1)
								}
								Else
								{
									If(LEqual(Local4, 0x02))
									{
										Or(Local1, 0x04, Local1)
									}
									Else
									{
										If(LEqual(Local4, 0x03))
										{
											Or(Local1, 0x10, Local1)
										}
									}
								}
							}
							Increment(Local3)
							Store(DerefOf(Index(Local2, Local3)), Local4)
						}
						Store(Local1, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						^^PCI0.GFX0.GHDS(One)
						Sleep(0x01F4)
					}
					Store(Zero, ^^PCI0.LPCB.EC.QKH)
					Store(Zero, ^^PCI0.LPCB.EC.QKL)
					Store(0x8A, P80H)
					Return(Local0)
				}
				Else
				{
					Store(Package(2) {0x0D, Zero}, Local0)
					Return(Local0)
				}
			}
			Method(WMIO, 1, NotSerialized)
			{
				If(^^PCI0.LPCB.EC.ECOK)
				{
					Store(Package(3)
					{
						Zero, 
						0x04, 
						Buffer(0x04)
						{
							0x00, 0x00, 0x00, 0x00
						}
					}, Local0)
					Store(Arg0, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Zero))
					Store(ShiftRight(Local1, 0x08), Index(DerefOf(Index(Local0, 0x02)), One))
					If(LEqual(Arg0, 0x01AE))
					{
						Store(Zero, Local1)
						Store(Package(8){}, Local2)
						Store(^^PCI0.GFX0.CADL, Index(Local2, Zero))
						Store(^^PCI0.GFX0.CAL2, Index(Local2, One))
						Store(^^PCI0.GFX0.CAL3, Index(Local2, 0x02))
						Store(^^PCI0.GFX0.CAL4, Index(Local2, 0x03))
						Store(^^PCI0.GFX0.CAL5, Index(Local2, 0x04))
						Store(^^PCI0.GFX0.CAL6, Index(Local2, 0x05))
						Store(^^PCI0.GFX0.CAL7, Index(Local2, 0x06))
						Store(^^PCI0.GFX0.CAL8, Index(Local2, 0x07))
						Store(Zero, Local3)
						Store(DerefOf(Index(Local2, Local3)), Local4)
						While(LAnd(LLess(Local3, 0x08), LNotEqual(Local4, Zero)))
						{
							And(ShiftRight(Local4, 0x08), 0x0F, Local4)
							If(LEqual(Local4, 0x04))
							{
								Or(Local1, One, Local1)
							}
							Else
							{
								If(LEqual(Local4, One))
								{
									Or(Local1, 0x02, Local1)
								}
								Else
								{
									If(LEqual(Local4, 0x02))
									{
										Or(Local1, 0x04, Local1)
									}
									Else
									{
										If(LEqual(Local4, 0x03))
										{
											Or(Local1, 0x10, Local1)
										}
									}
								}
							}
							Increment(Local3)
							Store(DerefOf(Index(Local2, Local3)), Local4)
						}
						Store(Local1, Index(DerefOf(Index(Local0, 0x02)), 0x03))
						Store(Zero, Local1)
						Store(Package(8){}, Local2)
						Store(^^PCI0.GFX0.NADL, Index(Local2, Zero))
						Store(^^PCI0.GFX0.NDL2, Index(Local2, One))
						Store(^^PCI0.GFX0.NDL3, Index(Local2, 0x02))
						Store(^^PCI0.GFX0.NDL4, Index(Local2, 0x03))
						Store(^^PCI0.GFX0.NDL5, Index(Local2, 0x04))
						Store(^^PCI0.GFX0.NDL6, Index(Local2, 0x05))
						Store(^^PCI0.GFX0.NDL7, Index(Local2, 0x06))
						Store(^^PCI0.GFX0.NDL8, Index(Local2, 0x07))
						Store(Zero, Local3)
						Store(DerefOf(Index(Local2, Local3)), Local4)
						While(LAnd(LLess(Local3, 0x08), LNotEqual(Local4, Zero)))
						{
							And(ShiftRight(Local4, 0x08), 0x0F, Local4)
							If(LEqual(Local4, 0x04))
							{
								Or(Local1, One, Local1)
							}
							Else
							{
								If(LEqual(Local4, One))
								{
									Or(Local1, 0x02, Local1)
								}
								Else
								{
									If(LEqual(Local4, 0x02))
									{
										Or(Local1, 0x04, Local1)
									}
									Else
									{
										If(LEqual(Local4, 0x03))
										{
											Or(Local1, 0x10, Local1)
										}
									}
								}
							}
							Increment(Local3)
							Store(DerefOf(Index(Local2, Local3)), Local4)
						}
						Store(Local1, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						^^PCI0.GFX0.GHDS(One)
						Sleep(0x01F4)
					}
					If(LEqual(Arg0, 0x01B7))
					{
						If(LEqual(^^PCI0.LPCB.EC.ADP, One))
						{
							Store(^^PCI0.LPCB.EC.LCBA, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Else
						{
							Store(^^PCI0.LPCB.EC.LCBD, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Store(0x0A, Index(DerefOf(Index(Local0, 0x02)), 0x03))
						^^PCI0.LPCB.EC.STBL()
					}
					If(LEqual(Arg0, 0x01B6))
					{
						If(LEqual(^^PCI0.LPCB.EC.ADP, One))
						{
							Store(^^PCI0.LPCB.EC.LCBA, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Else
						{
							Store(^^PCI0.LPCB.EC.LCBD, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						}
						Store(0x0A, Index(DerefOf(Index(Local0, 0x02)), 0x03))
						^^PCI0.LPCB.EC.STBL()
					}
				}
				Else
				{
					Store(Package(2) {0x0D, Zero}, Local0)
					Return(Local0)
				}
				Return(Local0)
			}
			Method(BEBA, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Return(Local0)
			}
			Method(WKLB, 0, NotSerialized)
			{
				Store(0x5C, P80H)
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				If(^^PCI0.LPCB.EC.ECOK)
				{
					Store(^^PCI0.LPCB.EC.QKH, Local1)
					Store(^^PCI0.LPCB.EC.QKL, Local2)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), One))
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), Zero))
					If(LAnd(LEqual(Local2, 0xA9), LEqual(Local1, 0x21)))
					{
						Store(^^PCI0.LPCB.EC.TPS, Index(DerefOf(Index(Local0, 0x02)), 0x02))
						Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x03))
					}
					Store(Zero, ^^PCI0.LPCB.EC.QKH)
					Store(Zero, ^^PCI0.LPCB.EC.QKL)
				}
				Else
				{
					Store(Package(2) {0x0D, Zero}, Local0)
				}
				Store(0x7C, P80H)
				Return(Local0)
			}
			Method(FRPT, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x80, 
					Buffer(0x80){}
				}, Local0)
				Store(Zero, OB0)
				Store(One, OB00)
				Store(One, OB01)
				Store(Zero, OB02)
				Store(Zero, OB03)
				Store(One, OB04)
				Store(One, OB05)
				Store(Zero, OB06)
				Store(One, OB07)
				Store(OB0, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Store(0x19, Index(DerefOf(Index(Local0, 0x02)), One))
				Store(One, Index(DerefOf(Index(Local0, 0x02)), 0x02))
				Store(0x7D, Local2)
				Store(0x03, Local1)
				While(Local2)
				{
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Local1))
					Decrement(Local2)
					Increment(Local1)
				}
				Return(Local0)
			}
			Method(WMSA, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(^^PCI0.LPCB.EC.SAS, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Return(Local0)
			}
			Method(GHPI, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x80, 
					Buffer(0x80){}
				}, Local0)
				Store(0xC5, SSMP)
				Store(SID0, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Store(SID1, Index(DerefOf(Index(Local0, 0x02)), One))
				Store(SID2, Index(DerefOf(Index(Local0, 0x02)), 0x02))
				Store(SID3, Index(DerefOf(Index(Local0, 0x02)), 0x03))
				Store(SID4, Index(DerefOf(Index(Local0, 0x02)), 0x04))
				Store(SID5, Index(DerefOf(Index(Local0, 0x02)), 0x05))
				Store(SID6, Index(DerefOf(Index(Local0, 0x02)), 0x06))
				Store(SID7, Index(DerefOf(Index(Local0, 0x02)), 0x07))
				Return(Local0)
			}
			Method(WWAR, 1, NotSerialized)
			{
				Store("HP WMI Command 0x10 (BIOS Write)", Debug)
				CreateByteField(Arg0,0x10,DA0)
				CreateByteField(Arg0,0x11,DA1)
				CreateByteField(Arg0,0x12,DA2)
				CreateByteField(Arg0,0x13,DA3)
				CreateByteField(Arg0,0x14,DA4)
				CreateByteField(Arg0,0x15,DA5)
				CreateByteField(Arg0,0x16,DA6)
				CreateByteField(Arg0,0x17,DA7)
				Store(DA0, SID0)
				Store(DA1, SID1)
				Store(DA2, SID2)
				Store(DA3, SID3)
				Store(DA4, SID4)
				Store(DA5, SID5)
				Store(DA6, SID6)
				Store(DA7, SID7)
				Store(0xC4, SSMP)
				Return(Package(2) {Zero, Zero})
			}
			Method(WPTG, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(WAPT, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Return(Local0)
			}
			Method(WPTS, 1, NotSerialized)
			{
				And(Arg0, 0xFF, Local0)
				Store(Local0, WAPT)
				Return(Package(2) {Zero, Zero})
			}
			Method(GWDI, 0, NotSerialized)
			{
				If(LNot(^^PCI0.LPCB.EC.WLAS))
				{
					Store(One, ^^PCI0.LPCB.EC.WLAS)
				}
				Store(Package(3)
				{
					Zero, 
					0x80, 
					Buffer(0x80){}
				}, Local0)
				Store(One, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), One))
				Store(Zero, Local2)
				If(LEqual(WINC, 0x31))
				{
					Or(Local2, One, Local2)
				}
				If(LEqual(GCAC, 0x31))
				{
					Or(Local2, 0x02, Local2)
				}
				Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x02))
				Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x03))
				Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x04))
				Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x05))
				Store(0x03, Index(DerefOf(Index(Local0, 0x02)), 0x06))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x07))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x08))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x09))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x0A))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x0B))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x0C))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x0D))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x0E))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x0F))
				Store(Zero, Local2)
				If(^^PCI0.LPCB.EC.WLS)
				{
					Add(Local2, One, Local2)
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x07))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Multiply(Local2, 0x10)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), One)))
					And(WLVD, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x02)))
					ShiftRight(WLVD, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x03)))
					And(WLDD, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x04)))
					ShiftRight(WLDD, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x05)))
					And(WLSV, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x06)))
					ShiftRight(WLSV, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x07)))
					And(WLSS, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x08)))
					ShiftRight(WLSS, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x09)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0A)))
					Store(Zero, Local1)
					If(^^PCI0.LPCB.EC.WLD)
					{
						Or(Local1, One, Local1)
					}
					If(WLWI)
					{
						Or(Local1, 0x02, Local1)
					}
					If(^^PCI0.LPCB.EC.WLSL)
					{
						Or(Local1, 0x04, Local1)
					}
					If(BTNS)
					{
						Or(Local1, 0x08, Local1)
					}
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0B)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0C)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0D)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0E)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0F)))
				}
				If(^^PCI0.LPCB.EC.WWS)
				{
					Add(Local2, One, Local2)
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x07))
					Store(0x02, Index(DerefOf(Index(Local0, 0x02)), Multiply(Local2, 0x10)))
					Store(One, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), One)))
					And(WWVD, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x02)))
					ShiftRight(WWVD, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x03)))
					And(WWDD, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x04)))
					ShiftRight(WWDD, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x05)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x06)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x07)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x08)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x09)))
					Store(One, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0A)))
					Store(Zero, Local1)
					If(^^PCI0.LPCB.EC.OWAN)
					{
						Or(Local1, One, Local1)
					}
					Else
					{
						If(WAPT)
						{
							If(^^PCI0.LPCB.EC.BATP)
							{
								If(^^PCI0.LPCB.EC.WWD)
								{
									Or(Local1, One, Local1)
								}
							}
							Else
							{
								And(Local1, 0xFE, Local1)
							}
						}
						Else
						{
							If(^^PCI0.LPCB.EC.WWD)
							{
								Or(Local1, One, Local1)
							}
						}
					}
					If(WWWI)
					{
						Or(Local1, 0x02, Local1)
					}
					If(^^PCI0.LPCB.EC.WWSL)
					{
						Or(Local1, 0x04, Local1)
					}
					If(BTNS)
					{
						Or(Local1, 0x08, Local1)
					}
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0B)))
					Store(Zero, Local1)
					If(LNot(^^PCI0.LPCB.EC.OWAN))
					{
						If(SIMD)
						{
							Or(Local1, One, Local1)
						}
					}
					If(UNDA)
					{
						Or(Local1, 0x02, Local1)
					}
					If(UNDB)
					{
						Or(Local1, 0x04, Local1)
					}
					If(UNDC)
					{
						Or(Local1, 0x08, Local1)
					}
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0C)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0D)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0E)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0F)))
				}
				If(^^PCI0.LPCB.EC.BTS)
				{
					Add(Local2, One, Local2)
					Store(Local2, Index(DerefOf(Index(Local0, 0x02)), 0x07))
					Store(One, Index(DerefOf(Index(Local0, 0x02)), Multiply(Local2, 0x10)))
					Store(One, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), One)))
					And(BTVD, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x02)))
					ShiftRight(BTVD, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x03)))
					And(BTDD, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x04)))
					ShiftRight(BTDD, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x05)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x06)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x07)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x08)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x09)))
					If(WBCB)
					{
						Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0A)))
					}
					Else
					{
						Store(0x02, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0A)))
					}
					Store(Zero, Local1)
					If(WBCB)
					{
						If(^^PCI0.LPCB.EC.WLD)
						{
							Or(Local1, One, Local1)
						}
						If(WLWI)
						{
							Or(Local1, 0x02, Local1)
						}
						If(^^PCI0.LPCB.EC.WLSL)
						{
							Or(Local1, 0x04, Local1)
						}
					}
					Else
					{
						If(^^PCI0.LPCB.EC.BTD)
						{
							Or(Local1, One, Local1)
						}
						If(BTWI)
						{
							Or(Local1, 0x02, Local1)
						}
						If(^^PCI0.LPCB.EC.BTSL)
						{
							Or(Local1, 0x04, Local1)
						}
					}
					If(BTNS)
					{
						Or(Local1, 0x08, Local1)
					}
					Store(Local1, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0B)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0C)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0D)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0E)))
					Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Add(Multiply(Local2, 0x10), 0x0F)))
				}
				Return(Local0)
			}
			Method(SWDS, 1, NotSerialized)
			{
				If(Or(Or(^^PCI0.LPCB.EC.WLS, ^^PCI0.LPCB.EC.BTS), ^^PCI0.LPCB.EC.WWS))
				{
					Store(Arg0, Local3)
					And(Local3, 0xFF, Local0)
					ShiftRight(Local3, 0x08, Local1)
					And(Local1, 0xFF, Local1)
					ShiftRight(Local3, 0x10, Local2)
					And(Local2, 0xFF, Local2)
					ShiftRight(Local3, 0x18, Local3)
					And(Local3, 0xFF, Local3)
					If(LEqual(Local3, One))
					{
						If(LEqual(Local2, Zero))
						{
							If(WBCB)
							{
								SWLS(One)
								SBTS(One)
							}
							Else
							{
								SWLS(One)
							}
						}
						If(LEqual(Local2, One))
						{
							SWWS(One)
						}
						If(LEqual(Local2, 0x02))
						{
							SBTS(One)
						}
						If(LEqual(Local2, 0xFE))
						{
							SWLS(One)
							SBTS(One)
							SWWS(One)
						}
						If(LEqual(Local2, 0xFF))
						{
							Store(One, BTNS)
							SWLS(One)
							SBTS(One)
							SWWS(One)
						}
					}
					Else
					{
						If(LEqual(Local2, Zero))
						{
							If(WBCB)
							{
								SWLS(Zero)
								SBTS(Zero)
							}
							Else
							{
								SWLS(Zero)
							}
						}
						If(LEqual(Local2, One))
						{
							SWWS(Zero)
						}
						If(LEqual(Local2, 0x02))
						{
							SBTS(Zero)
						}
						If(LEqual(Local2, 0xFE))
						{
							SWLS(Zero)
							SBTS(Zero)
							SWWS(Zero)
						}
						If(LEqual(Local2, 0xFF))
						{
							Store(Zero, BTNS)
							SWLS(Zero)
							SBTS(Zero)
							SWWS(Zero)
						}
					}
				}
				Else
				{
					Return(Package(2) {0x0D, Zero})
				}
				Sleep(0xC8)
				Store(0x05, WMIU)
				Store(Zero, WMIV)
				Notify(WMID, 0x80)
				Store(0x85, P80H)
				Return(Package(2) {Zero, Zero})
			}
			Method(SBTS, 1, NotSerialized)
			{
				Store(Arg0, Local0)
				And(Local0, One, Local0)
				If(LAnd(^^PCI0.LPCB.EC.BTS, ^^PCI0.LPCB.EC.BTSL))
				{
					Store(Local0, BTWI)
					Store(Local0, ^^PCI0.LPCB.EC.BTD)
					Not(Local0, Local1)
					Store(Local1, BTPR)
					Store(Local0, BTBK)
				}
			}
			Method(SWLS, 1, NotSerialized)
			{
				Store(Arg0, Local0)
				And(Local0, One, Local0)
				If(LAnd(^^PCI0.LPCB.EC.WLS, ^^PCI0.LPCB.EC.WLSL))
				{
					Store(Local0, WLWI)
					Store(Local0, ^^PCI0.LPCB.EC.WLD)
					Store(Local0, WLBK)
				}
			}
			Method(SWWS, 1, NotSerialized)
			{
				Store(Arg0, Local0)
				And(Local0, One, Local0)
				If(LAnd(^^PCI0.LPCB.EC.WWS, ^^PCI0.LPCB.EC.WWSL))
				{
					Store(Local0, WWWI)
					Store(Local0, ^^PCI0.LPCB.EC.WWD)
					Store(Local0, WWBK)
				}
			}
			Method(GDLC, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(0x1D, HWCT)
				Store(One, HWBC)
				Store(0xC3, SSMP)
				CreateField(DerefOf(Index(Local0, 0x02)),Zero,0x20,BUFS)
				Store(Buffer(0x80){}, Local1)
				Store(HWBF, Local1)
				CreateDWordField(Local1, Zero, HWD1)
				Store(HWD1, BUFS)
				Return(Local0)
			}
			Method(SDLC, 1, NotSerialized)
			{
				Store(Buffer(0x80){}, Local0)
				CreateDWordField(Local0, Zero, HWD1)
				Store(Arg0, HWD1)
				Store(Local0, HWBF)
				Store(0x1D, HWCT)
				Store(0x02, HWBC)
				Store(0xC3, SSMP)
				Return(Package(2) {Zero, Zero})
			}
			Method(GBUS, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04){}
				}, Local2)
				If(LAnd(HBUC, One))
				{
					Store(One, Local0)
				}
				Else
				{
					Store(Zero, Local0)
				}
				Store(HBUS, Local1)
				Store(Local0, Index(DerefOf(Index(Local2, 0x02)), Zero))
				Store(Local1, Index(DerefOf(Index(Local2, 0x02)), One))
				Return(Local2)
			}
			Method(SBUS, 1, NotSerialized)
			{
				Store(Arg0, HBUC)
				Return(Package(2) {Zero, Zero})
			}
			Method(WMBG, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				If(^^PCI0.LPCB.EC.BATP)
				{
					If(^^PCI0.LPCB.EC.STPC)
					{
						Store(0x03, Index(DerefOf(Index(Local0, 0x02)), Zero))
					}
					Else
					{
						If(^^PCI0.LPCB.EC.ADDC)
						{
							Store(0x02, Index(DerefOf(Index(Local0, 0x02)), Zero))
						}
						Else
						{
							If(And(^^PCI0.LPCB.EC.BST, 0x02))
							{
								Store(One, Index(DerefOf(Index(Local0, 0x02)), Zero))
							}
							Else
							{
								Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Zero))
							}
						}
					}
				}
				Else
				{
					Store(0xFF, Index(DerefOf(Index(Local0, 0x02)), Zero))
				}
				Store(0xFF, Index(DerefOf(Index(Local0, 0x02)), One))
				Return(Local0)
			}
			Method(WMSG, 1, NotSerialized)
			{
				Store(Arg0, Local1)
				And(Local1, 0xFF, Local0)
				ShiftRight(Local1, 0x08, Local1)
				And(Local1, 0xFF, Local1)
				If(LEqual(Local0, Zero))
				{
					If(^^PCI0.LPCB.EC.BATP)
					{
						If(LEqual(Local1, Zero))
						{
							Store(Zero, ^^PCI0.LPCB.EC.ADDC)
							Store(Zero, ^^PCI0.LPCB.EC.STPC)
							Store(Zero, Local0)
							Return(Local0)
						}
						If(LEqual(Local1, One))
						{
							Store(Zero, ^^PCI0.LPCB.EC.ADDC)
							Store(Zero, ^^PCI0.LPCB.EC.STPC)
							Store(Zero, Local0)
							Return(Local0)
						}
						If(LEqual(Local1, 0x02))
						{
							Store(One, ^^PCI0.LPCB.EC.ADDC)
							Store(Zero, ^^PCI0.LPCB.EC.STPC)
							Store(Zero, Local0)
							Return(Local0)
						}
					}
					Else
					{
						Store(0xFF, Local0)
						Return(Local0)
					}
				}
				If(LEqual(Local0, One))
				{
					Store(0xFF, Local0)
					Return(Local0)
				}
				If(LEqual(Local0, 0x63))
				{
					If(^^PCI0.LPCB.EC.BATP)
					{
						If(LEqual(Local1, Zero))
						{
							Store(Zero, ^^PCI0.LPCB.EC.ADDC)
							Store(Zero, ^^PCI0.LPCB.EC.STPC)
							Store(Zero, Local0)
							Return(Local0)
						}
						If(LEqual(Local1, One))
						{
							Store(One, ^^PCI0.LPCB.EC.ADDC)
							Store(Zero, ^^PCI0.LPCB.EC.STPC)
							Store(Zero, Local0)
							Return(Local0)
						}
						If(LEqual(Local1, 0x02))
						{
							Store(Zero, ^^PCI0.LPCB.EC.ADDC)
							Store(One, ^^PCI0.LPCB.EC.STPC)
							Store(Zero, Local0)
							Return(Local0)
						}
					}
					Else
					{
						Store(0xFF, Local0)
						Return(Local0)
					}
				}
				Return(Local0)
			}
			Method(GROC, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), One))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x02))
				Store(Zero, Index(DerefOf(Index(Local0, 0x02)), 0x03))
				Return(Local0)
			}
			Method(GTDC, 1, NotSerialized)
			{
				Store(Buffer(0x80){}, Local0)
				CreateDWordField(Local0, Zero, HWD1)
				Store(Arg0, HWD1)
				Store(Local0, HWBF)
				Store(0x28, HWCT)
				Store(One, HWBC)
				Store(0xC3, SSMP)
				Store(Package(3)
				{
					Zero, 
					0x80, 
					Buffer(0x80){}
				}, Local1)
				CreateField(DerefOf(Index(Local1, 0x02)),Zero,0x0400,BUFS)
				Store(Buffer(0x80){}, Local2)
				Store(HWBF, Local2)
				Store(Local2, BUFS)
				Return(Local1)
			}
			Method(STDC, 1, NotSerialized)
			{
				Store(Buffer(0x80){}, Local0)
				CreateField(Arg0,0x80,0x0400,BUFS)
				Store(BUFS, Local0)
				Store(Local0, HWBF)
				Store(0x28, HWCT)
				Store(0x02, HWBC)
				Store(0xC3, SSMP)
				Return(Package(2) {Zero, Zero})
			}
			Method(GFCC, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(FACM, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Return(Local0)
			}
			Method(SFCC, 1, NotSerialized)
			{
				Store(0x29, HWCT)
				Store(0x02, HWBC)
				Store(Arg0, Index(WMBF, Zero))
				Store(WMBF, HWBF)
				Store(0xC3, SSMP)
				Store(Arg0, FACM)
				Return(Package(2) {Zero, Zero})
			}
			Method(GPES, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(0x2A, HWCT)
				Store(One, HWBC)
				Store(0xC3, SSMP)
				Store(HWBF, WMBF)
				Store(WB00, Index(DerefOf(Index(Local0, 0x02)), Zero))
				Return(Local0)
			}
			Method(SPES, 1, NotSerialized)
			{
				Store(0x2A, HWCT)
				Store(0x02, HWBC)
				Store(Arg0, Index(WMBF, Zero))
				Store(WMBF, HWBF)
				Store(0xC3, SSMP)
				Return(Package(2) {Zero, Zero})
			}
			Method(GBCO, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				Store(Zero, Local1)
				If(^^PCI0.LPCB.EC.BATP)
				{
					Store(^^PCI0.LPCB.EC.BATS, Index(DerefOf(Index(Local0, 0x02)), Zero))
				}
				Else
				{
					Store(0xFF, Index(DerefOf(Index(Local0, 0x02)), Zero))
				}
				Store(0xFF, Index(DerefOf(Index(Local0, 0x02)), One))
				Return(Local0)
			}
			Method(SBCO, 1, NotSerialized)
			{
				Store(Arg0, Local1)
				And(Local1, 0xFF, Local0)
				ShiftRight(Local1, 0x08, Local1)
				And(Local1, 0xFF, Local1)
				If(LEqual(Local0, Zero))
				{
					If(LLessEqual(Local1, 0x05))
					{
						Store(Local1, ^^PCI0.LPCB.EC.BATC)
						Sleep(0x64)
						Return(^^PCI0.LPCB.EC.BATR)
					}
					Else
					{
						Return(0x03)
					}
				}
				Else
				{
					Return(0x34)
				}
			}
			Method(GTCS, 0, NotSerialized)
			{
				Store(Package(3)
				{
					Zero, 
					0x04, 
					Buffer(0x04)
					{
						0x00, 0x00, 0x00, 0x00
					}
				}, Local0)
				If(^^PCI0.LPCB.EC.ECOK)
				{
					Store(^^PCI0.LPCB.EC.GSTA, Index(DerefOf(Index(Local0, 0x02)), Zero))
					Store(^^PCI0.LPCB.EC.MMOS, Index(DerefOf(Index(Local0, 0x02)), One))
					Store(^^PCI0.LPCB.EC.DMOS, Index(DerefOf(Index(Local0, 0x02)), 0x02))
					STPS()
					Return(Local0)
				}
				Else
				{
					Store(Package(2) {0x0D, Zero}, Local0)
					Return(Local0)
				}
			}
			Method(STCS, 1, NotSerialized)
			{
				If(^^PCI0.LPCB.EC.ECOK)
				{
					Store(Arg0, Local2)
					And(Local2, 0xFF, Local0)
					ShiftRight(Local2, 0x08, Local2)
					And(Local2, 0xFF, Local1)
					ShiftRight(Local2, 0x08, Local2)
					And(Local2, 0xFF, Local2)
					Store(Local1, ^^PCI0.LPCB.EC.MMOS)
					Store(Local2, ^^PCI0.LPCB.EC.DMOS)
					STPS()
					Return(Package(2) {Zero, Zero})
				}
				Else
				{
					Store(Package(2) {0x0D, Zero}, Local0)
					Return(Local0)
				}
			}
			Method(STPS, 0, NotSerialized)
			{
				If(LEqual(^^PCI0.LPCB.EC.TURS, One))
				{
					Sleep(0x64)
					If(LEqual(And(^^PCI0.LPCB.EC.GSTA, One), One))
					{
						If(LEqual(And(^^PCI0.LPCB.EC.GSTA, 0x02), 0x02))
						{
							If(LEqual(^^PCI0.LPCB.EC.MMOS, Zero))
							{
								^^PCI0.LPCB.EC.SPST(Zero)
							}
							Else
							{
								^^PCI0.LPCB.EC.SPST(One)
							}
						}
						Else
						{
							If(LEqual(^^PCI0.LPCB.EC.DMOS, Zero))
							{
								^^PCI0.LPCB.EC.SPST(Zero)
							}
							Else
							{
								^^PCI0.LPCB.EC.SPST(One)
							}
						}
					}
					Else
					{
						If(LEqual(^^PCI0.LPCB.EC.DMOS, Zero))
						{
							^^PCI0.LPCB.EC.SPST(Zero)
						}
						Else
						{
							^^PCI0.LPCB.EC.SPST(One)
						}
					}
				}
				Else
				{
					^^PCI0.LPCB.EC.SPST(Zero)
				}
			}
			Method(_WED, 1, NotSerialized)
			{
				If(LEqual(Arg0, 0xA0))
				{
					If(LEqual(DerefOf(Index(ETYP, Zero)), Zero))
					{
						Store(S001, BF2S)
						Store(BF2S, Index(DerefOf(Index(EVNT, Zero)), One))
						Return(DerefOf(Index(EVNT, Zero)))
					}
					If(LEqual(DerefOf(Index(ETYP, Zero)), One))
					{
						Return(DerefOf(Index(EVNT, One)))
					}
					Else
					{
						Return(DerefOf(Index(EVNT, 0x02)))
					}
				}
				Else
				{
					Store(Buffer(0x08)
					{
						0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
					}, Local0)
					CreateDWordField(Local0, Zero, EVID)
					CreateDWordField(Local0, 0x04, EVDA)
					Store(WMIU, EVID)
					Store(WMIV, EVDA)
					If(LNotEqual(WMIY, Zero))
					{
						Store(WMIY, WMIU)
						Store(WMIZ, WMIV)
						Store(WMIU, EVID)
						Store(WMIV, EVDA)
						Store(Zero, WMIY)
						Store(Zero, WMIZ)
						If(LEqual(WEVT, Zero))
						{
							Store(One, WEVT)
							Notify(WMID, 0x80)
						}
					}
					Else
					{
						Store(Zero, WMIU)
						Store(Zero, WMIV)
					}
					Return(Local0)
				}
			}
			Name(WQAE, Buffer(0x08A9)
			{
				0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, 
				0x99, 0x08, 0x00, 0x00, 0x8A, 0x3A, 0x00, 0x00, 
				0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, 
				0x98, 0x4B, 0x9C, 0x00, 0x01, 0x06, 0x18, 0x42, 
				0x10, 0x13, 0x10, 0x22, 0x21, 0x04, 0x12, 0x01, 
				0xA1, 0xC8, 0x2C, 0x0C, 0x86, 0x10, 0x38, 0x2E, 
				0x84, 0x1C, 0x40, 0x88, 0x59, 0x50, 0x08, 0x21, 
				0x10, 0xEA, 0x4F, 0x20, 0xBF, 0x02, 0x10, 0x3A, 
				0x14, 0x20, 0x53, 0x80, 0x41, 0x01, 0x4E, 0x11, 
				0x44, 0xD0, 0xAB, 0x00, 0x9B, 0x02, 0x4C, 0x0A, 
				0xB0, 0x28, 0x40, 0xBB, 0x00, 0xCB, 0x02, 0x74, 
				0x0B, 0x90, 0x0E, 0x4B, 0x44, 0x82, 0xA3, 0xC4, 
				0x80, 0xA3, 0x74, 0x62, 0x0B, 0x37, 0x6C, 0xF0, 
				0x42, 0x51, 0x34, 0x83, 0x28, 0x09, 0x2A, 0x17, 
				0xE0, 0x1B, 0x41, 0xE0, 0xE5, 0x0A, 0x90, 0x3C, 
				0x01, 0x69, 0x16, 0x60, 0x58, 0x80, 0x75, 0x01, 
				0xB2, 0x87, 0x40, 0xA5, 0x0E, 0x01, 0x25, 0x67, 
				0x08, 0xA8, 0x01, 0xB4, 0x3A, 0x01, 0xE1, 0x57, 
				0x3A, 0x25, 0x24, 0x41, 0x38, 0x63, 0x15, 0x8F, 
				0xAF, 0x59, 0x34, 0x3D, 0x27, 0x39, 0xC7, 0x90, 
				0xE3, 0x71, 0xA1, 0x07, 0xC1, 0x05, 0x78, 0x18, 
				0x06, 0x1D, 0xB2, 0x22, 0x6B, 0x80, 0xC1, 0x58, 
				0x18, 0x0B, 0x75, 0x31, 0x6A, 0xD4, 0x48, 0xD9, 
				0x80, 0x0C, 0x51, 0x12, 0x1C, 0x6A, 0xD4, 0x96, 
				0x28, 0xC0, 0xFC, 0x38, 0x34, 0xBB, 0xB6, 0xC7, 
				0x42, 0x20, 0x99, 0xB4, 0xA1, 0xA0, 0xA4, 0x40, 
				0x68, 0x6C, 0x67, 0xEA, 0x19, 0x45, 0x3C, 0x52, 
				0xC3, 0x24, 0xF0, 0x28, 0x22, 0x1B, 0x8D, 0x43, 
				0x63, 0x87, 0xE1, 0x61, 0x06, 0x3B, 0x88, 0xC3, 
				0x38, 0xE6, 0xC8, 0x09, 0x3C, 0xA1, 0x23, 0x3D, 
				0xF2, 0xC2, 0xE6, 0x29, 0xD4, 0x18, 0xCD, 0x41, 
				0x11, 0xB8, 0xD0, 0x18, 0x19, 0x10, 0xF2, 0x3C, 
				0x7E, 0x8D, 0xC4, 0x04, 0x76, 0x2F, 0xC0, 0x1A, 
				0xA6, 0x60, 0x1B, 0x9B, 0x98, 0xFE, 0xFF, 0x10, 
				0x47, 0x1E, 0xA3, 0xAD, 0xB9, 0x0B, 0x29, 0x4C, 
				0x8C, 0x28, 0xC1, 0xE2, 0x55, 0x3C, 0x0D, 0xA1, 
				0x3C, 0x29, 0x84, 0x8A, 0x54, 0x19, 0x8A, 0x86, 
				0x1E, 0xA5, 0x42, 0x01, 0xCE, 0xE6, 0x21, 0xDC, 
				0x1A, 0x41, 0x85, 0x10, 0x2B, 0x52, 0xAC, 0xF6, 
				0x07, 0x41, 0x42, 0x2E, 0x5B, 0xC7, 0x07, 0x47, 
				0x1A, 0x0D, 0xEA, 0x50, 0xE0, 0xB1, 0x7B, 0xDC, 
				0xCF, 0x02, 0x3E, 0x08, 0x9C, 0x5B, 0x90, 0xA3, 
				0x3B, 0x8B, 0x47, 0x85, 0x83, 0xF6, 0xF0, 0xD8, 
				0x6D, 0xC0, 0x67, 0x08, 0x9F, 0x02, 0xF0, 0xAE, 
				0x01, 0x35, 0xFD, 0x83, 0x67, 0x82, 0xE0, 0x50, 
				0x43, 0xF4, 0xA8, 0xC3, 0x9D, 0xC0, 0x21, 0x32, 
				0x40, 0x4F, 0xEA, 0xB8, 0xB1, 0x83, 0x3B, 0x99, 
				0x83, 0x7E, 0x6F, 0x68, 0xF6, 0xC6, 0x40, 0x08, 
				0x8E, 0xC7, 0x97, 0x05, 0x36, 0xE1, 0x04, 0x96, 
				0x3F, 0x08, 0xD4, 0xC8, 0x0C, 0xED, 0x51, 0x9E, 
				0x56, 0xCC, 0x90, 0xCF, 0x0C, 0x26, 0xB0, 0x58, 
				0x08, 0x29, 0x80, 0xD0, 0x78, 0xC0, 0x7F, 0x03, 
				0x78, 0xC0, 0xF0, 0xCD, 0xC0, 0xF3, 0x35, 0xC1, 
				0xB0, 0x10, 0x32, 0xB2, 0x0A, 0x8F, 0x87, 0x8E, 
				0xC2, 0xD7, 0x83, 0xC3, 0x39, 0xAD, 0x78, 0x26, 
				0x18, 0x0E, 0x42, 0x27, 0x09, 0x8B, 0x1A, 0x36, 
				0x3D, 0x39, 0xF0, 0x43, 0x03, 0xBB, 0x19, 0x9C, 
				0xC1, 0x23, 0x80, 0x47, 0x72, 0x42, 0xFE, 0x98, 
				0x78, 0x60, 0xF0, 0x01, 0xF1, 0xDE, 0xA7, 0x4C, 
				0x46, 0x70, 0xA6, 0x06, 0xF4, 0x71, 0xC0, 0xFF, 
				0xFF, 0xA1, 0xF0, 0x21, 0x7A, 0x7C, 0xA7, 0x7C, 
				0xBC, 0x96, 0x00, 0x21, 0x59, 0xE3, 0x84, 0x7E, 
				0x87, 0xF0, 0xF1, 0xC3, 0x47, 0x16, 0x47, 0x84, 
				0x90, 0x93, 0x53, 0x00, 0x1A, 0xF8, 0x74, 0xCF, 
				0x2E, 0xC2, 0xE9, 0x7A, 0x52, 0x0E, 0x34, 0x0C, 
				0x3A, 0x4E, 0x70, 0x9C, 0x07, 0xC0, 0x31, 0x4E, 
				0xF8, 0xE7, 0x02, 0xF8, 0x03, 0xE4, 0xA7, 0x8C, 
				0x57, 0x8C, 0x04, 0x8E, 0x39, 0x42, 0xF4, 0xB9, 
				0xC6, 0x23, 0xC4, 0xC2, 0x3F, 0x55, 0x14, 0x3E, 
				0x10, 0x32, 0x46, 0x70, 0x01, 0x7A, 0x8C, 0xC0, 
				0x37, 0xE0, 0x18, 0xD1, 0x47, 0x09, 0xAE, 0xFE, 
				0xA0, 0x41, 0x07, 0x88, 0xFB, 0xFF, 0x0F, 0x10, 
				0x3E, 0xA8, 0x07, 0x08, 0x7C, 0xA3, 0x1F, 0x3D, 
				0xD0, 0xE3, 0xB2, 0xE8, 0xF3, 0x80, 0x8C, 0x9F, 
				0x68, 0x34, 0x2F, 0x7E, 0x3A, 0xE0, 0x87, 0x0F, 
				0xF0, 0x80, 0x7A, 0x48, 0x38, 0x50, 0xCC, 0xB4, 
				0x39, 0xE8, 0xB3, 0xCB, 0xA1, 0x63, 0x87, 0x0B, 
				0xFE, 0x13, 0x08, 0xB8, 0xE4, 0x1D, 0xC2, 0x40, 
				0x31, 0x62, 0xFC, 0x39, 0xC8, 0xA7, 0x30, 0xF0, 
				0xFF, 0xFF, 0x4F, 0x61, 0xB8, 0x11, 0xF0, 0x20, 
				0xAF, 0x05, 0x9F, 0xB6, 0xA8, 0x74, 0x18, 0xD4, 
				0x81, 0x0B, 0x30, 0x09, 0x1A, 0xE1, 0x59, 0xA2, 
				0x36, 0x08, 0x01, 0xBF, 0x4D, 0xBC, 0x6D, 0xF9, 
				0x16, 0x10, 0xE7, 0xC8, 0x7B, 0x3B, 0x70, 0x11, 
				0x8C, 0x08, 0xA7, 0x1D, 0xCA, 0x63, 0x88, 0x18, 
				0x23, 0xCA, 0xE3, 0x96, 0x51, 0xDE, 0xB6, 0x5E, 
				0x00, 0xE2, 0x9D, 0xE5, 0xF3, 0x96, 0x31, 0x82, 
				0x47, 0x7E, 0xE0, 0x62, 0x62, 0xDF, 0x13, 0xFA, 
				0xB9, 0xF9, 0xC0, 0x05, 0x38, 0xFB, 0xFF, 0x1F, 
				0xB8, 0x00, 0x0E, 0x05, 0x3D, 0x0C, 0xA1, 0x87, 
				0xE1, 0xA9, 0x9C, 0xCB, 0x13, 0xE5, 0xA9, 0x44, 
				0x8C, 0x1A, 0x26, 0xEA, 0x33, 0x94, 0x2F, 0x1A, 
				0x3E, 0x10, 0x81, 0xEF, 0xCC, 0x05, 0xFC, 0xFE, 
				0xFF, 0x07, 0x22, 0x38, 0x02, 0xCF, 0x34, 0xA0, 
				0xF4, 0x39, 0x03, 0x81, 0x9C, 0x8A, 0x0F, 0x35, 
				0xC0, 0x48, 0xF4, 0xAB, 0xC1, 0x27, 0x1A, 0x2A, 
				0x13, 0x06, 0x75, 0xA8, 0x01, 0x4C, 0x5E, 0x61, 
				0x9E, 0x46, 0xCF, 0xF9, 0x59, 0xC6, 0xA7, 0x1A, 
				0x1F, 0x4A, 0x8D, 0x63, 0x88, 0x97, 0x99, 0x87, 
				0x1A, 0x1F, 0x0B, 0x5E, 0x49, 0x7D, 0xA8, 0x31, 
				0x54, 0x9C, 0x87, 0x1A, 0x9F, 0x48, 0x03, 0x45, 
				0x7D, 0xB3, 0x79, 0xB6, 0x31, 0x7A, 0x7C, 0xDF, 
				0x50, 0x0D, 0xF1, 0x50, 0xC3, 0x84, 0xBD, 0x23, 
				0xF4, 0xC1, 0xF5, 0xA1, 0x06, 0x1C, 0xFF, 0xFF, 
				0x43, 0x0D, 0xC0, 0xFF, 0xFF, 0xFF, 0xA1, 0x06, 
				0x70, 0x74, 0x34, 0x80, 0x73, 0x64, 0xC4, 0x1D, 
				0x0D, 0xC0, 0x75, 0x28, 0x05, 0x0E, 0x47, 0x03, 
				0xE0, 0x71, 0x14, 0x02, 0xF3, 0x85, 0xC6, 0x47, 
				0x21, 0x60, 0xF1, 0xFF, 0x3F, 0x0A, 0xE1, 0x64, 
				0x9F, 0x83, 0x50, 0x42, 0x8F, 0x42, 0x80, 0x54, 
				0xC8, 0xA7, 0x88, 0x67, 0x1F, 0x5F, 0x7E, 0x1E, 
				0x08, 0x22, 0xBC, 0xE6, 0xFB, 0x14, 0xE4, 0x43, 
				0xBE, 0x8F, 0x42, 0x0C, 0xC6, 0x50, 0xBE, 0x06, 
				0xF9, 0x28, 0xC4, 0xA0, 0x5E, 0x83, 0x7C, 0xDF, 
				0x37, 0xC8, 0x91, 0x18, 0xFB, 0x99, 0xC0, 0x47, 
				0x21, 0x26, 0xED, 0x28, 0x04, 0x28, 0xFC, 0xFF, 
				0x1F, 0x85, 0x00, 0xFE, 0xFF, 0xFF, 0x8F, 0x42, 
				0x80, 0xB3, 0x00, 0x47, 0x03, 0xD0, 0x4D, 0xEB, 
				0x51, 0x08, 0xBC, 0x77, 0x96, 0xD3, 0x3E, 0x01, 
				0x9F, 0x85, 0x00, 0xB3, 0xFF, 0xFF, 0xB3, 0x10, 
				0x30, 0x3B, 0x0A, 0x45, 0x3D, 0xE8, 0x57, 0xA1, 
				0x27, 0x80, 0x17, 0x80, 0x18, 0x61, 0xDE, 0x81, 
				0x5E, 0x32, 0xD9, 0x5D, 0xDC, 0x38, 0x4F, 0x2E, 
				0xA7, 0x6D, 0x94, 0x97, 0x20, 0x1F, 0x28, 0x9E, 
				0x85, 0x0C, 0xF5, 0x2E, 0x14, 0xF4, 0x8D, 0xDC, 
				0xA3, 0x8C, 0x19, 0x3F, 0xC4, 0xF3, 0x90, 0x21, 
				0x9E, 0x85, 0x00, 0x76, 0xFD, 0xFF, 0xCF, 0x42, 
				0x00, 0xFF, 0xFF, 0xFF, 0x47, 0x03, 0xF8, 0x2F, 
				0x00, 0x9F, 0x85, 0x80, 0xE7, 0x09, 0xE0, 0x41, 
				0xDB, 0x67, 0x21, 0x80, 0x33, 0x87, 0xCB, 0xF3, 
				0x0F, 0x7A, 0x60, 0xEF, 0x11, 0x9E, 0xF5, 0x71, 
				0xBF, 0x5E, 0x7A, 0xE0, 0x0F, 0x05, 0xCF, 0x42, 
				0x0C, 0xEB, 0x98, 0x7C, 0x16, 0x62, 0x10, 0x2F, 
				0x9A, 0x86, 0x78, 0xE1, 0xF4, 0x61, 0xC0, 0xFF, 
				0x7F, 0xBC, 0xC0, 0xAF, 0x9C, 0x06, 0x0A, 0x12, 
				0xE8, 0x59, 0x08, 0x60, 0xFC, 0xFF, 0xFF, 0x2C, 
				0x04, 0x90, 0x71, 0x8D, 0x3A, 0x0B, 0x01, 0xCB, 
				0x63, 0x0C, 0x3B, 0xAD, 0x24, 0xF8, 0xFF, 0x3F, 
				0x0B, 0x01, 0x9F, 0x5C, 0x46, 0x0E, 0x42, 0x98, 
				0x88, 0x6F, 0x05, 0x1F, 0x33, 0x01, 0xA5, 0xE7, 
				0xA0, 0x17, 0x77, 0x63, 0x04, 0x7E, 0x91, 0x78, 
				0xCC, 0x64, 0x47, 0x4D, 0xC3, 0x3C, 0x0B, 0x19, 
				0xEF, 0x30, 0xCE, 0xE0, 0x09, 0xDE, 0x93, 0x7F, 
				0x16, 0x62, 0x60, 0xC7, 0x18, 0xEC, 0x51, 0xC8, 
				0xA0, 0x06, 0x8F, 0x1D, 0x22, 0x4C, 0xA0, 0x67, 
				0x21, 0x16, 0x6A, 0xDC, 0x3A, 0x7F, 0xF8, 0x2C, 
				0x04, 0xBC, 0xFF, 0xFF, 0x67, 0x21, 0xC0, 0xD3, 
				0x61, 0xC3, 0x67, 0x0D, 0xF0, 0x0C, 0xDF, 0xA3, 
				0x3A, 0x87, 0xC7, 0x63, 0xE0, 0x92, 0x55, 0xC7, 
				0x09, 0x83, 0xE5, 0x5E, 0xA7, 0x6C, 0x9C, 0x61, 
				0xE8, 0x20, 0xAC, 0x0E, 0x48, 0xC3, 0xC1, 0xDC, 
				0x43, 0x0E, 0xE2, 0x7C, 0xD8, 0x40, 0xAD, 0x08, 
				0x4E, 0xC7, 0x24, 0x0F, 0xDA, 0x5A, 0x28, 0xA4, 
				0x80, 0x46, 0x03, 0x32, 0xBC, 0x33, 0x9F, 0x96, 
				0x28, 0x88, 0x01, 0x7D, 0x02, 0xB2, 0x8D, 0x73, 
				0x00, 0x6A, 0x2F, 0x9A, 0x02, 0x39, 0xDA, 0x60, 
				0xF4, 0x5F, 0x16, 0xE8, 0x6C, 0x7C, 0x0D, 0xE0, 
				0x1A, 0x20, 0x74, 0x30, 0x30, 0xB4, 0xD5, 0xDC, 
				0x62, 0x50, 0x60, 0xC6, 0x7F, 0x70, 0x31, 0x81, 
				0x8F, 0x2E, 0xF8, 0xB3, 0x00, 0xEE, 0xFF, 0x3F, 
				0x5C, 0x8F, 0xF6, 0x5D, 0xA0, 0xEA, 0xC9, 0xEA, 
				0x8A, 0x60, 0x75, 0x97, 0x17, 0x08, 0x33, 0x32, 
				0x41, 0x7D, 0x07, 0x02, 0x50, 0x00, 0xF9, 0x0E, 
				0xE0, 0xA3, 0xD3, 0x73, 0x00, 0x9B, 0x48, 0x88, 
				0x30, 0xD1, 0x8C, 0x8E, 0x98, 0x30, 0x2A, 0xFA, 
				0x84, 0x29, 0x88, 0x27, 0xEC, 0x58, 0x13, 0x46, 
				0xCF, 0xC4, 0x77, 0x1B, 0x36, 0x62, 0x4C, 0x88, 
				0xDB, 0x06, 0xB4, 0x09, 0x06, 0xF5, 0x3D, 0x08, 
				0xD6, 0x90, 0xF9, 0x58, 0x7C, 0x67, 0xC0, 0x4D, 
				0x19, 0x8C, 0x73, 0x62, 0xD7, 0x04, 0x0B, 0x9C, 
				0x33, 0xC8, 0xE1, 0x31, 0xD7, 0x2F, 0x7E, 0x5B, 
				0xF2, 0xE8, 0xF8, 0x41, 0xC1, 0x37, 0x1C, 0x86, 
				0xFD, 0x30, 0xE6, 0x19, 0xBD, 0x8A, 0xF9, 0xE6, 
				0x86, 0x81, 0xF5, 0x78, 0x39, 0xAC, 0xD1, 0xC2, 
				0x1E, 0xDA, 0xAB, 0x87, 0xCF, 0x2D, 0x3E, 0x4F, 
				0x18, 0x23, 0xAC, 0x2F, 0x2C, 0xE0, 0x00, 0xFC, 
				0xFF, 0xBF, 0x5A, 0xC1, 0xBE, 0x6B, 0x80, 0xE7, 
				0x26, 0xE4, 0xBB, 0x06, 0xC0, 0xDA, 0xFF, 0xFF, 
				0x5D, 0x03, 0xFE, 0x35, 0xC1, 0x77, 0x0D, 0xE0, 
				0x3D, 0x74, 0xDF, 0x35, 0x80, 0x6B, 0xF6, 0xBB, 
				0x06, 0xEA, 0x18, 0x60, 0x85, 0x77, 0x0D, 0x68, 
				0xB7, 0xB4, 0x57, 0xB4, 0x87, 0x2A, 0x6B, 0xBA, 
				0x6C, 0xA0, 0xD4, 0x5C, 0x36, 0x00, 0x6D, 0xFF, 
				0xFF, 0xCB, 0x06, 0xB0, 0x91, 0x32, 0x61, 0x54, 
				0xF8, 0x09, 0x53, 0x10, 0x4F, 0xD8, 0xC1, 0x2E, 
				0x1B, 0xA0, 0x88, 0x71, 0xD9, 0x00, 0xFD, 0xD8, 
				0x5E, 0x36, 0x80, 0xC1, 0x3D, 0x81, 0xDF, 0x36, 
				0x80, 0x37, 0xA4, 0x6F, 0x1B, 0xC0, 0xF4, 0xFF, 
				0x0F, 0x31, 0xFF, 0x6D, 0x03, 0xC5, 0x61, 0x95, 
				0xB7, 0x0D, 0x88, 0x87, 0x77, 0x46, 0x60, 0x55, 
				0xD7, 0x0D, 0x94, 0x9E, 0xEB, 0x06, 0x40, 0x02, 
				0x31, 0x13, 0x46, 0xC5, 0x9F, 0x30, 0x05, 0xF1, 
				0x84, 0x1D, 0xED, 0xBA, 0x01, 0x8A, 0x20, 0xD7, 
				0x0D, 0xD0, 0xCF, 0xEB, 0x94, 0xC1, 0xFA, 0xFF, 
				0xBF, 0x6E, 0x60, 0x2F, 0x0A, 0x98, 0xFB, 0x06, 
				0xF0, 0x86, 0xE5, 0xF7, 0x0D, 0xC0, 0xC7, 0xE5, 
				0x1B, 0x73, 0xDF, 0x00, 0x6C, 0xFE, 0xFF, 0xEF, 
				0x1B, 0x00, 0x13, 0x2E, 0x0A, 0xB8, 0xFB, 0x06, 
				0xF0, 0xBE, 0x48, 0xFB, 0xBE, 0x01, 0x5C, 0x83, 
				0x49, 0xF8, 0xFF, 0xDF, 0xF5, 0xE8, 0x0B, 0x40, 
				0x51, 0x60, 0x50, 0x43, 0xF2, 0x99, 0x00, 0x3F, 
				0xBA, 0x83, 0x3B, 0xA6, 0xE0, 0x4C, 0x12, 0x1C, 
				0x6A, 0xE0, 0xBE, 0x02, 0x3C, 0xCD, 0x9F, 0xD6, 
				0x7B, 0xBD, 0xE7, 0xF1, 0x24, 0x10, 0x92, 0x1D, 
				0x61, 0x7C, 0x6C, 0x43, 0x9C, 0x0C, 0xC8, 0x41, 
				0xDC, 0x47, 0xF7, 0x88, 0xEF, 0xE1, 0x86, 0x49, 
				0xE0, 0x21, 0x33, 0x34, 0x0E, 0x8D, 0x1D, 0x86, 
				0xEF, 0x02, 0xC1, 0x0E, 0xE2, 0x30, 0xCE, 0xD7, 
				0x04, 0x9E, 0xD0, 0x83, 0xC0, 0x7B, 0xF9, 0xA3, 
				0x41, 0xF1, 0x77, 0x03, 0x4A, 0x60, 0xB8, 0xD0, 
				0x98, 0x91, 0xFA, 0x6C, 0xFF, 0x8E, 0x70, 0x24, 
				0x26, 0xB0, 0x7B, 0x48, 0x59, 0x13, 0xA0, 0xF1, 
				0x96, 0x43, 0x20, 0x7A, 0xC3, 0x91, 0x2D, 0x14, 
				0xCD, 0x2D, 0xCA, 0xFB, 0x42, 0x14, 0x3B, 0x43, 
				0x10, 0x46, 0x94, 0x60, 0x41, 0x9E, 0xD6, 0x62, 
				0x45, 0x79, 0x66, 0x37, 0x42, 0xC4, 0x10, 0xAF, 
				0x0C, 0x81, 0x5E, 0x12, 0xC2, 0x07, 0x79, 0xEC, 
				0x89, 0xD3, 0xFE, 0x20, 0x88, 0xF8, 0x17, 0x82, 
				0x3C, 0x80, 0x28, 0xD2, 0x68, 0x50, 0xE7, 0x06, 
				0x8F, 0xDD, 0x87, 0x10, 0x5F, 0xFE, 0x7D, 0xB8, 
				0xF7, 0xE8, 0x0E, 0xEE, 0x45, 0xFE, 0xA0, 0x3D, 
				0x3C, 0x76, 0xC2, 0xF0, 0x41, 0x03, 0x8E, 0x6B, 
				0x40, 0x4D, 0xFF, 0x19, 0x01, 0x2C, 0x97, 0x7F, 
				0xF8, 0xE3, 0xF1, 0x3D, 0xC1, 0xF3, 0x39, 0xE1, 
				0x04, 0x96, 0x3F, 0x08, 0xD4, 0x71, 0x84, 0xCF, 
				0xF3, 0x85, 0xC3, 0x90, 0xCF, 0x02, 0x87, 0xC5, 
				0xC4, 0x0A, 0xF8, 0xFF, 0x9F, 0x4C, 0xD8, 0x78, 
				0xC0, 0x7F, 0x0F, 0x79, 0xFD, 0xF7, 0xCD, 0xC0, 
				0xF3, 0x35, 0xC1, 0x88, 0x10, 0x72, 0x32, 0x1E, 
				0x34, 0xE8, 0xD9, 0xF8, 0x80, 0xE1, 0xEB, 0x09, 
				0x3B, 0x77, 0x70, 0x51, 0xE7, 0x0E, 0xD4, 0xD1, 
				0xC1, 0xA7, 0x06, 0x76, 0xB3, 0xC1, 0x1C, 0xB7, 
				0xF9, 0x59, 0x03, 0xFC, 0x23, 0x84, 0x7F, 0x7B, 
				0xF0, 0xBC, 0x7C, 0x65, 0x78, 0x75, 0x48, 0xE0, 
				0x90, 0x23, 0x44, 0x8F, 0xCB, 0x23, 0xC4, 0x9C, 
				0x6F, 0x30, 0x43, 0x04, 0xD7, 0x59, 0x00, 0x1C, 
				0x43, 0x04, 0x3E, 0x67, 0x4C, 0x9F, 0x71, 0x60, 
				0xFE, 0xFF, 0xCF, 0x38, 0xEC, 0xD2, 0xC3, 0x07, 
				0x6A, 0x78, 0x13, 0xF8, 0xFE, 0x8C, 0x3B, 0xD2, 
				0x18, 0x9C, 0x1F, 0x33, 0x1E, 0x76, 0x18, 0xF8, 
				0xFB, 0x8E, 0x67, 0x70, 0x34, 0x3E, 0xA0, 0x18, 
				0x21, 0xF8, 0x73, 0xC9, 0x73, 0x8A, 0x35, 0x0F, 
				0x52, 0x33, 0x7A, 0x67, 0x38, 0x04, 0x76, 0xB3, 
				0xC2, 0x1D, 0x38, 0x3C, 0x04, 0x3E, 0x80, 0x56, 
				0x27, 0x47, 0x4E, 0x3F, 0xA7, 0x84, 0x1B, 0x3E, 
				0xBF, 0x0A, 0x60, 0x0E, 0x41, 0x38, 0x85, 0x36, 
				0x7D, 0x6A, 0x34, 0x6A, 0xD5, 0xA0, 0x4C, 0x8D, 
				0x32, 0x0D, 0x6A, 0xF5, 0xA9, 0xD4, 0x98, 0xB1, 
				0x0B, 0x8B, 0x03, 0xBE, 0x02, 0x74, 0x1C, 0xB0, 
				0x3C, 0x0A, 0x1D, 0xC1, 0xC8, 0x9B, 0x40, 0x20, 
				0x0E, 0x0B, 0x42, 0x23, 0xBD, 0x71, 0x04, 0x62, 
				0xC9, 0xEF, 0x2F, 0x81, 0x58, 0xEE, 0x03, 0x45, 
				0x20, 0x0E, 0x68, 0x02, 0x9C, 0xAA, 0x00, 0xA7, 
				0xAF, 0x01, 0x81, 0x38, 0x32, 0x08, 0x15, 0xFA, 
				0x35, 0x13, 0x88, 0x63, 0x82, 0xD0, 0x50, 0x3E, 
				0x40, 0x98, 0xF4, 0x17, 0x80, 0x00, 0x89, 0x11, 
				0x10, 0x16, 0xEE, 0xE5, 0x20, 0x10, 0x4B, 0x7B, 
				0x2D, 0x08, 0xC4, 0x42, 0xAC, 0x80, 0xB0, 0xB8, 
				0x20, 0x34, 0x9C, 0x16, 0x10, 0x26, 0xC9, 0x0C, 
				0x08, 0x0B, 0x04, 0x42, 0xE5, 0x3F, 0xD3, 0x04, 
				0x62, 0x91, 0x6E, 0x00, 0xE9, 0xBA, 0x05, 0xE2, 
				0x20, 0x7A, 0x40, 0x98, 0x0C, 0x3F, 0x20, 0x2C, 
				0x34, 0x08, 0x8D, 0xF6, 0x6C, 0x10, 0x20, 0x31, 
				0x04, 0xC2, 0xE2, 0x3B, 0x02, 0x61, 0xE2, 0xDF, 
				0x44, 0x02, 0x71, 0x4A, 0x4B, 0x10, 0x37, 0xA5, 
				0x01, 0x06, 0x11, 0x90, 0x93, 0x6A, 0x02, 0x62, 
				0xB9, 0x41, 0x34, 0x24, 0xF2, 0xB0, 0x10, 0x90, 
				0x93, 0x82, 0x68, 0xC0, 0xC4, 0x14, 0x90, 0xFF, 
				0xFF, 0x43, 0x13, 0x88, 0x80, 0x9C, 0xCA, 0x15, 
				0x10, 0x8B, 0x08, 0x22, 0x20, 0x27, 0x7B, 0x52, 
				0x09, 0xC8, 0x39, 0x41, 0x74, 0x04, 0x20, 0xBA, 
				0x80, 0x58, 0x3E, 0x10, 0x01, 0x39, 0x96, 0x2F, 
				0x20, 0x16, 0x12, 0x44, 0x40, 0x4E, 0xF4, 0xF3, 
				0x09, 0x44, 0xE2, 0x81, 0x68, 0x10, 0xE4, 0x3F, 
				0x21, 0x20, 0x67, 0x04, 0x11, 0x10, 0x79, 0x12, 
				0x05, 0x21, 0x9A, 0x3E, 0x62, 0x02, 0x71, 0x6A, 
				0x10, 0x9A, 0xEC, 0x27, 0x14, 0x84, 0xFC, 0xFF, 
				0x01
			})
		}
		Method(HTS3, 1, NotSerialized)
		{
			If(LEqual(Arg0, Zero))
			{
				Store(Zero, HSMS)
				Store(0xD6, HSMC)
			}
			If(LEqual(Arg0, One))
			{
				Store(One, HSMS)
				Store(0xD6, HSMC)
			}
		}
	}
	OperationRegion(CMS1, SystemIO, 0x72, 0x02)
	Field(CMS1, ByteAcc, NoLock, Preserve)
	{
		CMSI, 8,
		CMSD, 8,
	}
	IndexField(CMSI, CMSD, ByteAcc, Lock, Preserve)
	{
		Offset(0x41),	//Offset(65),
		IOSF, 1,
		Offset(0x45),	//Offset(69),
		EFID, 8,
		EFI1, 8,
		WANT, 1,
		, 7,
		GPSF, 1,
		Offset(0x52),	//Offset(82),
		WLWI, 1,
		BTWI, 1,
		WWWI, 1,
		BTNS, 1,
		SIMD, 1,
		WAPT, 1,
		, 2,
		WLBK, 1,
		BTBK, 1,
		WWBK, 1,
		BTNB, 1,
		, 4,
		WBCB, 1,
		Offset(0x56),	//Offset(86),
		UND0, 1,
		UND1, 1,
		UND2, 1,
		Offset(0x60),	//Offset(96),
		S4FG, 8,
		HOTW, 8,
		Offset(0x77),	//Offset(119),
		HSDC, 8,
		HSDS, 8,
		HBUC, 8,
		HBUS, 8,
	}
	Method(CMSW, 2, NotSerialized)
	{
		Store(Arg0, CMSI)
		Store(Arg1, CMSD)
	}
	Mutex(MUTX, 0)
	OperationRegion(DBG0, SystemIO, 0x80, One)
	Field(DBG0, ByteAcc, NoLock, Preserve)
	{
		IO80, 8,
	}
	OperationRegion(PRT0, SystemIO, 0x80, 0x04)
	Field(PRT0, DWordAcc, Lock, Preserve)
	{
		P80H, 32,
	}
	Method(P8XH, 3, Serialized)
	{
		If(LEqual(Arg0, Zero))
		{
			Store(Or(And(P80D, 0xFFFFFF00), Arg1), P80D)
		}
		If(LEqual(Arg0, One))
		{
			Store(Or(And(P80D, 0xFFFF00FF), ShiftLeft(Arg1, 0x08)), P80D)
		}
		If(LEqual(Arg0, 0x02))
		{
			Store(Or(And(P80D, 0xFF00FFFF), ShiftLeft(Arg1, 0x10)), P80D)
		}
		If(LEqual(Arg0, 0x03))
		{
			Store(Or(And(P80D, 0x00FFFFFF), ShiftLeft(Arg1, 0x18)), P80D)
		}
		If(LEqual(Arg0, 0x04))
		{
			Store(Or(And(P80D, Zero), Arg1), P80D)
		}
		If(LEqual(Arg2, Zero)) {}
		If(LEqual(Arg2, One))
		{
			Store(P80D, P80H)
		}
	}
	OperationRegion(SPRT, SystemIO, 0xB2, 0x02)
	Field(SPRT, ByteAcc, Lock, Preserve)
	{
		SSMP, 8,
	}
	Method(_PIC, 1, NotSerialized)
	{
		Store(Arg0, GPIC)
		Store(Arg0, PICM)
	}
	Method(_PTS, 1, NotSerialized)
	{
		Store(Zero, P80D)
		P8XH(Zero, Arg0, Zero)
		If(LEqual(Arg0, 0x05))
		{
			Store(0x05, \_SB.PCI0.LPCB.EC.SLP)
		}
		If(LEqual(Arg0, 0x03))
		{
			Store(0x03, \_SB.PCI0.LPCB.EC.SLP)
			P8XH(0x04, 0x53, Zero)
			P8XH(0x04, 0x53, One)
			If(LAnd(DTSE, LGreater(TCNT, One)))
			{
				TRAP(TRTD, 0x1E)
			}
		}
		If(LEqual(Arg0, 0x04))
		{
			Store(0x04, \_SB.PCI0.LPCB.EC.SLP)
			P8XH(0x04, 0x54, Zero)
			P8XH(0x04, 0x54, One)
			CMSW(0xE0, 0x60)
		}
		If(LOr(LOr(LEqual(Arg0, 0x03), LEqual(Arg0, 0x04)), LEqual(Arg0, 0x05)))
		{
			If(LEqual(PFLV, FDTP))
			{
				Store(One, GP27)
			}
		}
	}
	Method(_WAK, 1, Serialized)
	{
		Store(Zero, P80D)
		CMSW(0xE0, Zero)
		If(NEXP)
		{
			If(And(OSCC, 0x02))
			{
				\_SB.PCI0.NHPG()
			}
			If(And(OSCC, 0x04))
			{
				\_SB.PCI0.NPME()
			}
		}
		If(LEqual(Arg0, 0x03))
		{
			P8XH(0x04, 0xE3, Zero)
			P8XH(0x04, 0xE3, One)
			Notify(\_SB.PCI0.LPCB.LID, 0x80)
			If(LEqual(Zero, ACTT))
			{
				If(LEqual(ECON, One)) {}
			}
		}
		If(LOr(LEqual(Arg0, 0x03), LEqual(Arg0, 0x04)))
		{
			If(LAnd(DTSE, LGreater(TCNT, One)))
			{
				TRAP(TRTD, 0x14)
			}
			If(LEqual(PMEE, One))
			{
				Store(One, PMEN)
			}
			If(LEqual(OSYS, 0x07D2))
			{
				If(And(CFGD, One))
				{
					If(LGreater(\_PR.CPU0._PPC, Zero))
					{
						Subtract(\_PR.CPU0._PPC, One, \_PR.CPU0._PPC)
						PNOT()
						Add(\_PR.CPU0._PPC, One, \_PR.CPU0._PPC)
						PNOT()
					}
					Else
					{
						Add(\_PR.CPU0._PPC, One, \_PR.CPU0._PPC)
						PNOT()
						Subtract(\_PR.CPU0._PPC, One, \_PR.CPU0._PPC)
						PNOT()
					}
				}
			}
			If(LEqual(ECON, One)) {}
			If(LEqual(RP1D, Zero))
			{
				Notify(\_SB.PCI0.RP01, Zero)
			}
			If(LEqual(RP2D, Zero))
			{
				Notify(\_SB.PCI0.RP02, Zero)
			}
			If(LEqual(RP3D, Zero))
			{
				Notify(\_SB.PCI0.RP03, Zero)
			}
			If(LEqual(RP4D, Zero))
			{
				Notify(\_SB.PCI0.RP04, Zero)
			}
			If(LEqual(RP5D, Zero))
			{
				Notify(\_SB.PCI0.RP05, Zero)
			}
			If(LEqual(RP7D, Zero))
			{
				If(LEqual(DSTS, Zero))
				{
					Notify(\_SB.PCI0.RP07, Zero)
				}
			}
			If(LEqual(RP8D, Zero))
			{
				If(LEqual(DSTS, Zero))
				{
					Notify(\_SB.PCI0.RP08, Zero)
				}
			}
		}
		If(LEqual(Arg0, 0x04))
		{
			P8XH(0x04, 0xE4, Zero)
			P8XH(0x04, 0xE4, One)
		}
		If(LEqual(Arg0, 0x03))
		{
			If(BTNS)
			{
				If(LAnd(\_SB.PCI0.LPCB.EC.BTS, BTWI))
				{
					Store(One, \_SB.PCI0.LPCB.EC.BTD)
					Store(Zero, BTPR)
				}
				Else
				{
					Store(Zero, \_SB.PCI0.LPCB.EC.BTD)
					Store(One, BTPR)
				}
			}
			Else
			{
				Store(Zero, \_SB.PCI0.LPCB.EC.BTD)
				Store(One, BTPR)
			}
		}
		\_SB.PCI0.LPCB.EC.SPST(Zero)
		Return(Package(2) {Zero, Zero})
	}
	Method(GETB, 3, Serialized)
	{
		Multiply(Arg0, 0x08, Local0)
		Multiply(Arg1, 0x08, Local1)
		CreateField(Arg2,Local0,Local1,TBF3)
		Return(TBF3)
	}
	Method(PNOT, 0, Serialized)
	{
		If(LGreater(TCNT, One))
		{
			If(And(PDC0, 0x08))
			{
				Notify(\_PR.CPU0, 0x80)
				If(And(PDC0, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU0, 0x81)
				}
			}
			If(And(PDC1, 0x08))
			{
				Notify(\_PR.CPU1, 0x80)
				If(And(PDC1, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU1, 0x81)
				}
			}
			If(And(PDC2, 0x08))
			{
				Notify(\_PR.CPU2, 0x80)
				If(And(PDC2, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU2, 0x81)
				}
			}
			If(And(PDC3, 0x08))
			{
				Notify(\_PR.CPU3, 0x80)
				If(And(PDC3, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU3, 0x81)
				}
			}
			If(And(PDC4, 0x08))
			{
				Notify(\_PR.CPU4, 0x80)
				If(And(PDC4, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU4, 0x81)
				}
			}
			If(And(PDC5, 0x08))
			{
				Notify(\_PR.CPU5, 0x80)
				If(And(PDC5, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU5, 0x81)
				}
			}
			If(And(PDC6, 0x08))
			{
				Notify(\_PR.CPU6, 0x80)
				If(And(PDC6, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU6, 0x81)
				}
			}
			If(And(PDC7, 0x08))
			{
				Notify(\_PR.CPU7, 0x80)
				If(And(PDC7, 0x10))
				{
					Sleep(0x64)
					Notify(\_PR.CPU7, 0x81)
				}
			}
		}
		Else
		{
			Notify(\_PR.CPU0, 0x80)
			Sleep(0x64)
			Notify(\_PR.CPU0, 0x81)
		}
		If(LEqual(ECON, One)) {}
	}
	Method(TRAP, 2, Serialized)
	{
		Store(Arg1, SMIF)
		If(LEqual(Arg0, TRTP))
		{
			Store(Zero, TRP0)
		}
		If(LEqual(Arg0, TRTD))
		{
			Store(Arg1, DTSF)
			Store(Zero, TRPD)
			Return(DTSF)
		}
		If(LEqual(Arg0, TRTI))
		{
			Store(Zero, TRPH)
		}
		Return(SMIF)
	}
	Scope(_SB.PCI0)
	{
		Method(_INI, 0, NotSerialized)
		{
			CMSW(0xE0, Zero)
			Store(0x07D0, OSYS)
			If(CondRefOf(\_OSI, Local0))
			{
				If(_OSI("Linux"))
				{
					Store(0x03E8, OSYS)
				}
				If(_OSI("Windows 2001"))
				{
					Store(0x07D1, OSYS)
				}
				If(_OSI("Windows 2001 SP1"))
				{
					Store(0x07D1, OSYS)
				}
				If(_OSI("Windows 2001 SP2"))
				{
					Store(0x07D2, OSYS)
				}
				If(_OSI("Windows 2001.1"))
				{
					Store(0x07D3, OSYS)
				}
				If(_OSI("Windows 2006"))
				{
					Store(0x07D6, OSYS)
				}
				If(_OSI("Windows 2009"))
				{
					Store(0x07D9, OSYS)
				}
			}
		}
		Method(NHPG, 0, Serialized)
		{
			Store(Zero, ^RP01.HPEX)
			Store(Zero, ^RP02.HPEX)
			Store(Zero, ^RP03.HPEX)
			Store(Zero, ^RP04.HPEX)
			Store(Zero, ^RP05.HPEX)
			Store(Zero, ^RP07.HPEX)
			Store(Zero, ^RP08.HPEX)
			Store(One, ^RP01.HPSX)
			Store(One, ^RP02.HPSX)
			Store(One, ^RP03.HPSX)
			Store(One, ^RP04.HPSX)
			Store(One, ^RP05.HPSX)
			Store(One, ^RP07.HPSX)
			Store(One, ^RP08.HPSX)
		}
		Method(NPME, 0, Serialized)
		{
			Store(Zero, ^RP01.PMEX)
			Store(Zero, ^RP02.PMEX)
			Store(Zero, ^RP03.PMEX)
			Store(Zero, ^RP04.PMEX)
			Store(Zero, ^RP05.PMEX)
			Store(Zero, ^RP07.PMEX)
			Store(Zero, ^RP08.PMEX)
			Store(One, ^RP01.PMSX)
			Store(One, ^RP02.PMSX)
			Store(One, ^RP03.PMSX)
			Store(One, ^RP04.PMSX)
			Store(One, ^RP05.PMSX)
			Store(One, ^RP07.PMSX)
			Store(One, ^RP08.PMSX)
		}
	}
	Scope(\)
	{
		Name(PICM, Zero)
	}
	Scope(_PR)
	{
		Processor(CPU0,0x01,0x00000410,0x06) {}
		Processor(CPU1,0x02,0x00000410,0x06) {}
		Processor(CPU2,0x03,0x00000410,0x06) {}
		Processor(CPU3,0x04,0x00000410,0x06) {}
		Processor(CPU4,0x05,0x00000410,0x06) {}
		Processor(CPU5,0x06,0x00000410,0x06) {}
		Processor(CPU6,0x07,0x00000410,0x06) {}
		Processor(CPU7,0x08,0x00000410,0x06) {}
	}
	Scope(_TZ)
	{
		ThermalZone(THRM)
		{
			Name(REGN, "Processor Thermal Zone")
			Name(FMAX, 0x15E0)
			Name(FMIN, 0x07D0)
			Method(FRSP, 0, NotSerialized)
			{
				If(\_SB.PCI0.LPCB.EC.ECOK)
				{
					Return(Multiply(\_SB.PCI0.LPCB.EC.FAT, 0xFF))
				}
				Return(FMAX)
			}
			Method(FSSP, 1, NotSerialized)
			{
				If(\_SB.PCI0.LPCB.EC.ECOK)
				{
					Store(And(LNot(Arg0), One), \_SB.PCI0.LPCB.EC.FST)
				}
			}
			Method(_TMP, 0, Serialized)
			{
				If(\_SB.PCI0.LPCB.EC.ECOK)
				{
					Store(\_SB.PCI0.LPCB.EC.CPT0, Local0)
					And(HOTW, One, HOTW)
					If(LEqual(HOTW, Zero))
					{
						If(LGreaterEqual(Local0, \_SB.PCI0.LPCB.EC.HOT))
						{
							Store(One, HOTW)
						}
					}
					Return(Add(Multiply(Local0, 0x0A), 0x0AAC))
				}
				Else
				{
					Return(0x0C3C)
				}
			}
			Method(_CRT, 0, Serialized)
			{
				Store(\_SB.PCI0.LPCB.EC.CRT, Local0)
				Return(Add(0x0AAC, Multiply(Local0, 0x0A)))
			}
			Method(_HOT, 0, NotSerialized)
			{
				Store(\_SB.PCI0.LPCB.EC.HOT, Local0)
				Return(Add(0x0AAC, Multiply(Local0, 0x0A)))
			}
			Method(_SCP, 1, Serialized)
			{
				Store(Zero, \_SB.PCI0.LPCB.EC.PAE)
			}
		}
	}
	Scope(_SB.PCI0)
	{
		Device(PDRC)
		{
			Name(_HID, EISAID("PNP0C02"))
			Name(_UID, One)
			Name(BUF0, ResourceTemplate()
			{
				Memory32Fixed(ReadWrite, 0x00000000, 0x00004000)
				Memory32Fixed(ReadWrite, 0x00000000, 0x00008000)
				Memory32Fixed(ReadWrite, 0x00000000, 0x00001000)
				Memory32Fixed(ReadWrite, 0x00000000, 0x00001000)
				Memory32Fixed(ReadWrite, 0x00000000, 0x00000000)
				Memory32Fixed(ReadWrite, 0xFED20000, 0x00020000)
				Memory32Fixed(ReadOnly, 0xFED90000, 0x00004000)
				Memory32Fixed(ReadOnly, 0xFF000000, 0x01000000)
				Memory32Fixed(ReadOnly, 0xFEE00000, 0x00100000)
				Memory32Fixed(ReadWrite, 0x00000000, 0x00001000)
			})
			Method(_CRS, 0, Serialized)
			{
				CreateDWordField(BUF0, 0x04, RBR0)
				ShiftLeft(^^LPCB.RCBA, 0x0E, RBR0)
				CreateDWordField(BUF0, 0x70, TBR0)
				Store(TBAB, TBR0)
				CreateDWordField(BUF0, 0x74, TBLN)
				If(LEqual(TBAB, Zero))
				{
					Store(Zero, TBLN)
				}
				CreateDWordField(BUF0, 0x10, MBR0)
				ShiftLeft(MHBR, 0x0F, MBR0)
				CreateDWordField(BUF0, 0x1C, DBR0)
				ShiftLeft(DIBR, 0x0C, DBR0)
				CreateDWordField(BUF0, 0x28, EBR0)
				ShiftLeft(EPBR, 0x0C, EBR0)
				CreateDWordField(BUF0, 0x34, XBR0)
				ShiftLeft(PXBR, 0x1A, XBR0)
				CreateDWordField(BUF0, 0x38, XSZ0)
				ShiftRight(0x10000000, PXSZ, XSZ0)
				Return(BUF0)
			}
		}
	}
	Method(BRTN, 1, Serialized)
	{
		If(LEqual(And(DID1, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD01, Arg0)
		}
		If(LEqual(And(DID2, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD02, Arg0)
		}
		If(LEqual(And(DID3, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD03, Arg0)
		}
		If(LEqual(And(DID4, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD04, Arg0)
		}
		If(LEqual(And(DID5, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD05, Arg0)
		}
		If(LEqual(And(DID6, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD06, Arg0)
		}
		If(LEqual(And(DID7, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD07, Arg0)
		}
		If(LEqual(And(DID8, 0x0F00), 0x0400))
		{
			Notify(\_SB.PCI0.GFX0.DD08, Arg0)
		}
	}
	Scope(_GPE)
	{
		Method(_L0B, 0, NotSerialized)
		{
			Notify(\_SB.PCI0.P0P1, 0x02)
		}
		Method(_L09, 0, NotSerialized)
		{
			If(LEqual(RP1D, Zero))
			{
				\_SB.PCI0.RP01.HPME()
				Notify(\_SB.PCI0.RP01, 0x02)
			}
			If(LEqual(RP2D, Zero))
			{
				\_SB.PCI0.RP02.HPME()
				Notify(\_SB.PCI0.RP02, 0x02)
			}
			If(LEqual(RP3D, Zero))
			{
				\_SB.PCI0.RP03.HPME()
				Notify(\_SB.PCI0.RP03, 0x02)
			}
			If(LEqual(RP4D, Zero))
			{
				\_SB.PCI0.RP04.HPME()
				Notify(\_SB.PCI0.RP04, 0x02)
			}
			If(LEqual(RP5D, Zero))
			{
				\_SB.PCI0.RP05.HPME()
				Notify(\_SB.PCI0.RP05, 0x02)
			}
			If(LEqual(RP7D, Zero))
			{
				\_SB.PCI0.RP07.HPME()
				Notify(\_SB.PCI0.RP07, 0x02)
			}
			If(LEqual(RP8D, Zero))
			{
				\_SB.PCI0.RP08.HPME()
				Notify(\_SB.PCI0.RP08, 0x02)
			}
			Notify(\_SB.PCI0.PEG0, 0x02)
			Notify(\_SB.PCI0.PEG0.PEGP, 0x02)
			Notify(\_SB.PCI0.PEG1, 0x02)
			Notify(\_SB.PCI0.PEG2, 0x02)
			Notify(\_SB.PCI0.PEG3, 0x02)
		}
		Method(_L0D, 0, NotSerialized)
		{
			Notify(\_SB.PCI0.EHC1, 0x02)
			Notify(\_SB.PCI0.EHC2, 0x02)
			Notify(\_SB.PCI0.HDEF, 0x02)
			Notify(\_SB.PCI0.GLAN, 0x02)
		}
		Method(_L01, 0, NotSerialized)
		{
			Add(L01C, One, L01C)
			If(LAnd(LEqual(RP1D, Zero), \_SB.PCI0.RP01.HPSX))
			{
				P8XH(One, One, One)
				P8XH(Zero, L01C, One)
				Sleep(0x64)
				If(\_SB.PCI0.RP01.PDCX)
				{
					Store(One, \_SB.PCI0.RP01.PDCX)
					Store(One, \_SB.PCI0.RP01.HPSX)
					If(LNot(\_SB.PCI0.RP01.PDSX))
					{
						Store(Zero, \_SB.PCI0.RP01.L0SE)
					}
					Notify(\_SB.PCI0.RP01, Zero)
				}
				Else
				{
					Store(One, \_SB.PCI0.RP01.HPSX)
				}
			}
			If(LAnd(LEqual(RP2D, Zero), \_SB.PCI0.RP02.HPSX))
			{
				P8XH(One, 0x02, One)
				P8XH(Zero, L01C, One)
				Sleep(0x64)
				If(\_SB.PCI0.RP02.PDCX)
				{
					Store(One, \_SB.PCI0.RP02.PDCX)
					Store(One, \_SB.PCI0.RP02.HPSX)
					If(LNot(\_SB.PCI0.RP02.PDSX))
					{
						Store(Zero, \_SB.PCI0.RP02.L0SE)
					}
					Notify(\_SB.PCI0.RP02, Zero)
				}
				Else
				{
					Store(One, \_SB.PCI0.RP02.HPSX)
				}
			}
			If(LAnd(LEqual(RP3D, Zero), \_SB.PCI0.RP03.HPSX))
			{
				P8XH(One, 0x03, One)
				P8XH(Zero, L01C, One)
				Sleep(0x64)
				If(\_SB.PCI0.RP03.PDCX)
				{
					Store(One, \_SB.PCI0.RP03.PDCX)
					Store(One, \_SB.PCI0.RP03.HPSX)
					If(LNot(\_SB.PCI0.RP03.PDSX))
					{
						Store(Zero, \_SB.PCI0.RP03.L0SE)
					}
					Notify(\_SB.PCI0.RP03, Zero)
				}
				Else
				{
					Store(One, \_SB.PCI0.RP03.HPSX)
				}
			}
			If(LAnd(LEqual(RP4D, Zero), \_SB.PCI0.RP04.HPSX))
			{
				P8XH(One, 0x04, One)
				P8XH(Zero, L01C, One)
				Sleep(0x64)
				If(\_SB.PCI0.RP04.PDCX)
				{
					Store(One, \_SB.PCI0.RP04.PDCX)
					Store(One, \_SB.PCI0.RP04.HPSX)
					If(LNot(\_SB.PCI0.RP04.PDSX))
					{
						Store(Zero, \_SB.PCI0.RP04.L0SE)
					}
					Notify(\_SB.PCI0.RP04, Zero)
				}
				Else
				{
					Store(One, \_SB.PCI0.RP04.HPSX)
				}
			}
			If(LAnd(LEqual(RP5D, Zero), \_SB.PCI0.RP05.HPSX))
			{
				P8XH(One, 0x05, One)
				P8XH(Zero, L01C, One)
				Sleep(0x64)
				If(\_SB.PCI0.RP05.PDCX)
				{
					Store(One, \_SB.PCI0.RP05.PDCX)
					Store(One, \_SB.PCI0.RP05.HPSX)
					If(LNot(\_SB.PCI0.RP05.PDSX))
					{
						Store(Zero, \_SB.PCI0.RP05.L0SE)
					}
					Notify(\_SB.PCI0.RP05, Zero)
				}
				Else
				{
					Store(One, \_SB.PCI0.RP05.HPSX)
				}
			}
			If(LAnd(LEqual(RP7D, Zero), \_SB.PCI0.RP07.HPSX))
			{
				P8XH(One, 0x07, One)
				P8XH(Zero, L01C, One)
				Sleep(0x64)
				If(\_SB.PCI0.RP07.PDCX)
				{
					Store(One, \_SB.PCI0.RP07.PDCX)
					Store(One, \_SB.PCI0.RP07.HPSX)
					If(LNot(\_SB.PCI0.RP07.PDSX))
					{
						Store(Zero, \_SB.PCI0.RP07.L0SE)
					}
					If(ECON) {}
				}
				Else
				{
					Store(One, \_SB.PCI0.RP07.HPSX)
				}
			}
			If(LAnd(LEqual(RP8D, Zero), \_SB.PCI0.RP08.HPSX))
			{
				P8XH(One, 0x08, One)
				P8XH(Zero, L01C, One)
				Sleep(0x64)
				If(\_SB.PCI0.RP08.PDCX)
				{
					Store(One, \_SB.PCI0.RP08.PDCX)
					Store(One, \_SB.PCI0.RP08.HPSX)
					If(LNot(\_SB.PCI0.RP08.PDSX))
					{
						Store(Zero, \_SB.PCI0.RP08.L0SE)
					}
					If(ECON) {}
				}
				Else
				{
					Store(One, \_SB.PCI0.RP08.HPSX)
				}
			}
		}
		Method(_L02, 0, NotSerialized)
		{
			Store(Zero, GPEC)
			If(CondRefOf(\_SB.PCI0.IEIT.EITV))
			{
				\_SB.PCI0.IEIT.EITV
			}
			If(CondRefOf(\TNOT))
			{
				TNOT
			}
		}
		Method(_L06, 0, NotSerialized)
		{
			If(LAnd(\_SB.PCI0.GFX0.GSSE, LNot(GSMI)))
			{
				\_SB.PCI0.GFX0.GSCI()
			}
		}
		Method(_L07, 0, NotSerialized)
		{
			Store(0x20, \_SB.PCI0.SBUS.HSTS)
		}
		Method(_L1E, 0, NotSerialized)
		{
			If(LEqual(ECON, Zero))
			{
				Return(Zero)
			}
			If(LNotEqual(LIDS, \_SB.PCI0.LPCB.EC.LDS))
			{
				Store(\_SB.PCI0.LPCB.EC.LDS, LIDS)
				If(IGDS)
				{
					If(\_SB.PCI0.GFX0.GLID(LIDS))
					{
						Or(0x80000000, \_SB.PCI0.GFX0.CLID, \_SB.PCI0.GFX0.CLID)
					}
				}
				Notify(\_SB.PCI0.LPCB.LID, 0x80)
			}
			Return(Zero)
		}
	}
	Device(_SB.PCI0.DOCK)
	{
		Name(_HID, "ABCDEFGH")
		Name(_CID, EISAID("PNP0C15"))
		Name(_UID, "SADDLESTRING")
		Method(_EJ0, 1, NotSerialized)
		{
			P8XH(Zero, 0xED, Zero)
			If(LEqual(ECON, One)) {}
			Return(One)
		}
		Method(_STA, 0, NotSerialized)
		{
			If(LEqual(ECON, Zero))
			{
				Return(Zero)
			}
			If(DSTS)
			{
				Return(0x0F)
			}
			Else
			{
				Return(Zero)
			}
		}
		Method(_DCK, 1, NotSerialized)
		{
			P8XH(Zero, 0xD3, Zero)
			If(Arg0)
			{
				Return(One)
			}
			Else
			{
				Store(Zero, DSTS)
				If(LEqual(ECON, One)) {}
				Return(One)
			}
		}
		Name(_EDL, Package(5) {^RP01.PXSX, ^RP02.PXSX, EHC1, SAT0, HDEF})
	}
	Scope(\)
	{
		OperationRegion(IO_T, SystemIO, 0x1000, 0x10)
		Field(IO_T, ByteAcc, NoLock, Preserve)
		{
			TRPI, 16,
			Offset(0x4),	//Offset(4),
			Offset(0x6),	//Offset(6),
			Offset(0x8),	//Offset(8),
			TRP0, 8,
			, 8,
			, 8,
			, 8,
			, 8,
			, 8,
			, 8,
			, 8,
		}
		OperationRegion(IO_D, SystemIO, 0x1010, 0x04)
		Field(IO_D, ByteAcc, NoLock, Preserve)
		{
			TRPD, 8,
		}
		OperationRegion(IO_H, SystemIO, 0x1000, 0x04)
		Field(IO_H, ByteAcc, NoLock, Preserve)
		{
			TRPH, 8,
		}
		OperationRegion(PMIO, SystemIO, PMBS, 0x80)
		Field(PMIO, ByteAcc, NoLock, Preserve)
		{
			Offset(0x20),	//Offset(32),
			Offset(0x22),	//Offset(34),
			, 3,
			GPS3, 1,
			Offset(0x28),	//Offset(40),
			Offset(0x2A),	//Offset(42),
			, 3,
			GPE3, 1,
			Offset(0x3C),	//Offset(60),
			PMEN, 1,
			UPRW, 1,
			Offset(0x42),	//Offset(66),
			, 1,
			GPEC, 1,
			Offset(0x64),	//Offset(100),
			Offset(0x65),	//Offset(101),
			, 1,
			SCIS, 1,
			, 6,
		}
		OperationRegion(GPIO, SystemIO, GPBS, 0x64)
		Field(GPIO, ByteAcc, NoLock, Preserve)
		{
			GU00, 8,
			GU01, 8,
			GU02, 8,
			GU03, 8,
			GIO0, 8,
			GIO1, 8,
			GIO2, 8,
			GIO3, 8,
			Offset(0xC),	//Offset(12),
			GL00, 8,
			GL01, 8,
			BTPR, 1,
			GL02, 7,
			, 3,
			GP27, 1,
			GP28, 1,
			, 3,
			Offset(0x18),	//Offset(24),
			GB00, 8,
			GB01, 8,
			GB02, 8,
			GB03, 8,
			Offset(0x2C),	//Offset(44),
			GIV0, 8,
			GIV1, 8,
			GIV2, 8,
			GIV3, 8,
			GU04, 8,
			GU05, 8,
			GU06, 8,
			GU07, 8,
			GIO4, 8,
			GIO5, 8,
			GIO6, 8,
			GIO7, 8,
			GL04, 8,
			GL05, 8,
			GL06, 8,
			GL07, 8,
			Offset(0x40),	//Offset(64),
			GU08, 8,
			GU09, 8,
			GU0A, 8,
			GU0B, 8,
			GIO8, 8,
			GIO9, 8,
			GIOA, 8,
			GIOB, 8,
			GL08, 8,
			GL09, 8,
			GL0A, 8,
			GL0B, 8,
		}
		OperationRegion(RCRB, SystemMemory, SRCB, 0x4000)
		Field(RCRB, DWordAcc, Lock, Preserve)
		{
			Offset(0x1000),	//Offset(4096),
			Offset(0x3000),	//Offset(12288),
			Offset(0x3404),	//Offset(13316),
			HPAS, 2,
			, 5,
			HPAE, 1,
			Offset(0x3418),	//Offset(13336),
			, 1,
			, 1,
			SATD, 1,
			SMBD, 1,
			HDAD, 1,
			Offset(0x341A),	//Offset(13338),
			RP1D, 1,
			RP2D, 1,
			RP3D, 1,
			RP4D, 1,
			RP5D, 1,
			RP6D, 1,
			RP7D, 1,
			RP8D, 1,
			Offset(0x359C),	//Offset(13724),
			UP0D, 1,
			UP1D, 1,
			UP2D, 1,
			UP3D, 1,
			UP4D, 1,
			UP5D, 1,
			UP6D, 1,
			UP7D, 1,
			UP8D, 1,
			UP9D, 1,
			UPAD, 1,
			UPBD, 1,
			UPCD, 1,
			UPDD, 1,
			, 1,
			, 1,
		}
		Method(GPI0, 4, NotSerialized)
		{
			If(LEqual(Or(Arg0, Arg1), Zero))
			{
				Return(Ones)
			}
			Else
			{
				If(And(LEqual(Arg0, Zero), LEqual(Arg1, One)))
				{
					Return(0x0384)
				}
			}
			Return(Multiply(0x1E, Subtract(0x09, Add(Arg2, Arg3))))
		}
		Method(GDMA, 2, NotSerialized)
		{
			If(LEqual(Arg0, One))
			{
				If(LEqual(Arg1, One))
				{
					Return(0x0F)
				}
			}
			Return(Ones)
		}
		Method(SFLG, 5, NotSerialized)
		{
			Store(Zero, Local0)
			Or(Arg1, Local0, Local0)
			Or(ShiftLeft(Arg0, One), Local0, Local0)
			Or(ShiftLeft(Arg2, 0x03), Local0, Local0)
			Or(ShiftLeft(Arg3, 0x02), Local0, Local0)
			Or(ShiftLeft(Arg4, 0x04), Local0, Local0)
			Return(Local0)
		}
		Method(SPIO, 3, NotSerialized)
		{
			Name(PBUF, Buffer(0x05)
			{
				0x00, 0x00, 0x00, 0x00, 0x00
			})
			CreateByteField(PBUF,Zero,RCT)
			CreateByteField(PBUF,One,ISP)
			CreateByteField(PBUF,0x02,FAST)
			CreateByteField(PBUF,0x03,DMAE)
			CreateByteField(PBUF,0x04,PIOT)
			If(LOr(LEqual(Arg0, Zero), LEqual(Arg0, Ones)))
			{
				Return(PBUF)
			}
			If(LGreater(Arg0, 0xF0))
			{
				Store(One, DMAE)
				Store(Zero, PIOT)
			}
			Else
			{
				Store(One, FAST)
				If(And(Arg1, 0x02))
				{
					If(And(LEqual(Arg0, 0x78), And(Arg2, 0x02)))
					{
						Store(0x03, RCT)
						Store(0x02, ISP)
						Store(0x04, PIOT)
						Return(PBUF)
					}
					If(And(LLessEqual(Arg0, 0xB4), And(Arg2, One)))
					{
						Store(One, RCT)
						Store(0x02, ISP)
						Store(0x03, PIOT)
						Return(PBUF)
					}
					Else
					{
						Store(Zero, RCT)
						Store(One, ISP)
						Store(0x02, PIOT)
					}
				}
			}
			Return(PBUF)
		}
		Method(SDMA, 3, NotSerialized)
		{
			Name(PBUF, Buffer(0x05)
			{
				0x00, 0x00, 0x00, 0x00
			})
			CreateByteField(PBUF,Zero,PCT)
			CreateByteField(PBUF,One,PCB)
			CreateByteField(PBUF,0x02,UDMT)
			CreateByteField(PBUF,0x03,UDME)
			CreateByteField(PBUF,0x04,DMAT)
			If(LOr(LEqual(Arg0, Zero), LEqual(Arg0, Ones)))
			{
				Return(PBUF)
			}
			If(LLessEqual(Arg0, 0x78))
			{
				If(And(Arg1, 0x04))
				{
					Store(One, UDME)
					If(And(LLessEqual(Arg0, 0x0F), And(Arg2, 0x40)))
					{
						Store(One, UDMT)
						Store(One, PCB)
						Store(One, PCT)
						Store(0x06, DMAT)
						Return(PBUF)
					}
					If(And(LLessEqual(Arg0, 0x14), And(Arg2, 0x20)))
					{
						Store(One, UDMT)
						Store(One, PCB)
						Store(One, PCT)
						Store(0x05, DMAT)
						Return(PBUF)
					}
					If(And(LLessEqual(Arg0, 0x1E), And(Arg2, 0x10)))
					{
						Store(One, PCB)
						Store(0x02, PCT)
						Store(0x04, DMAT)
						Return(PBUF)
					}
					If(And(LLessEqual(Arg0, 0x2D), And(Arg2, 0x08)))
					{
						Store(One, PCB)
						Store(One, PCT)
						Store(0x03, DMAT)
						Return(PBUF)
					}
					If(And(LLessEqual(Arg0, 0x3C), And(Arg2, 0x04)))
					{
						Store(0x02, PCT)
						Store(0x02, DMAT)
						Return(PBUF)
					}
					If(And(LLessEqual(Arg0, 0x5A), And(Arg2, 0x02)))
					{
						Store(One, PCT)
						Store(One, DMAT)
						Return(PBUF)
					}
					If(And(LLessEqual(Arg0, 0x78), And(Arg2, One)))
					{
						Store(Zero, DMAT)
					}
				}
			}
			Return(PBUF)
		}
		Method(SETT, 3, Serialized)
		{
			If(And(Arg1, 0x02))
			{
				If(LAnd(LLessEqual(Arg0, 0x78), And(Arg2, 0x02)))
				{
					Return(0x0B)
				}
				If(LAnd(LLessEqual(Arg0, 0xB4), And(Arg2, One)))
				{
					Return(0x09)
				}
			}
			Return(0x04)
		}
	}
	Scope(_SB.PCI0)
	{
		Device(GLAN)
		{
			Name(_ADR, 0x00190000)
			Method(_PRW, 0, NotSerialized)
			{
				If(WOLE)
				{
					Return(Package(2) {0x0D, 0x04})
				}
				Else
				{
					Return(Package(2) {0x0D, Zero})
				}
			}
		}
		Device(EHC1)
		{
			Name(_ADR, 0x001D0000)
			OperationRegion(PWKE, PCI_Config, 0x62, 0x04)
			Field(PWKE, DWordAcc, NoLock, Preserve)
			{
				, 1,
				PWUC, 8,
			}
			Method(_PSW, 1, NotSerialized)
			{
				If(Arg0)
				{
					Store(Ones, PWUC)
				}
				Else
				{
					Store(Zero, PWUC)
				}
			}
			Method(_S3D, 0, NotSerialized)
			{
				Return(0x02)
			}
			Method(_S4D, 0, NotSerialized)
			{
				Return(0x02)
			}
			Device(HUBN)
			{
				Name(_ADR, Zero)
				Device(PR01)
				{
					Name(_ADR, One)
					Name(_UPC, Package(4) {0xFF, Zero, Zero, Zero})
					Name(_PLD, Package(1)
					{
						Buffer(0x10)
						{
							0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
							0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
						}
					})
					Device(PR11)
					{
						Name(_ADR, One)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE1, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
					Device(PR12)
					{
						Name(_ADR, 0x02)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE1, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
					Device(PR13)
					{
						Name(_ADR, 0x03)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE1, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
					Device(PR14)
					{
						Name(_ADR, 0x04)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE1, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
						Alias(SBV1, SDGV)
						Method(_DSM, 4, Serialized)
						{
							Name(_T_0, Zero)
							If(LEqual(Arg0, ToUUID("A5FC708F-87754BA6-BD0CBA90A1EC72F8")}))
							{
								While(One)
								{
									Store(ToInteger(Arg2), _T_0)
									If(LEqual(_T_0, Zero))
									{
										If(LEqual(Arg1, One))
										{
											Return(Buffer(One)
											{
												0x07
											})
										}
										Else
										{
											Return(Buffer(One)
											{
												0x00
											})
										}
									}
									Else
									{
										If(LEqual(_T_0, One))
										{
											If(LEqual(SDGV, 0xFF))
											{
												Return(Zero)
											}
											Else
											{
												Return(One)
											}
										}
										Else
										{
											If(LEqual(_T_0, 0x02))
											{
												Return(SDGV)
											}
										}
									}
									Break
								}
							}
							Return(Zero)
						}
					}
					Device(PR15)
					{
						Name(_ADR, 0x05)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xB0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
						Alias(SBV2, SDGV)
						Method(_DSM, 4, Serialized)
						{
							Name(_T_0, Zero)
							If(LEqual(Arg0, ToUUID("A5FC708F-87754BA6-BD0CBA90A1EC72F8")}))
							{
								While(One)
								{
									Store(ToInteger(Arg2), _T_0)
									If(LEqual(_T_0, Zero))
									{
										If(LEqual(Arg1, One))
										{
											Return(Buffer(One)
											{
												0x07
											})
										}
										Else
										{
											Return(Buffer(One)
											{
												0x00
											})
										}
									}
									Else
									{
										If(LEqual(_T_0, One))
										{
											If(LEqual(SDGV, 0xFF))
											{
												Return(Zero)
											}
											Else
											{
												Return(One)
											}
										}
										Else
										{
											If(LEqual(_T_0, 0x02))
											{
												Return(SDGV)
											}
										}
									}
									Break
								}
							}
							Return(Zero)
						}
					}
					Device(PR16)
					{
						Name(_ADR, 0x06)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xB0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
						Alias(SBV1, SDGV)
						Method(_DSM, 4, Serialized)
						{
							Name(_T_0, Zero)
							If(LEqual(Arg0, ToUUID("A5FC708F-87754BA6-BD0CBA90A1EC72F8")}))
							{
								While(One)
								{
									Store(ToInteger(Arg2), _T_0)
									If(LEqual(_T_0, Zero))
									{
										If(LEqual(Arg1, One))
										{
											Return(Buffer(One)
											{
												0x07
											})
										}
										Else
										{
											Return(Buffer(One)
											{
												0x00
											})
										}
									}
									Else
									{
										If(LEqual(_T_0, One))
										{
											If(LEqual(SDGV, 0xFF))
											{
												Return(Zero)
											}
											Else
											{
												Return(One)
											}
										}
										Else
										{
											If(LEqual(_T_0, 0x02))
											{
												Return(SDGV)
											}
										}
									}
									Break
								}
							}
							Return(Zero)
						}
					}
					Device(PR17)
					{
						Name(_ADR, 0x07)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xB1, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
						Alias(SBV2, SDGV)
						Method(_DSM, 4, Serialized)
						{
							Name(_T_0, Zero)
							If(LEqual(Arg0, ToUUID("A5FC708F-87754BA6-BD0CBA90A1EC72F8")}))
							{
								While(One)
								{
									Store(ToInteger(Arg2), _T_0)
									If(LEqual(_T_0, Zero))
									{
										If(LEqual(Arg1, One))
										{
											Return(Buffer(One)
											{
												0x07
											})
										}
										Else
										{
											Return(Buffer(One)
											{
												0x00
											})
										}
									}
									Else
									{
										If(LEqual(_T_0, One))
										{
											If(LEqual(SDGV, 0xFF))
											{
												Return(Zero)
											}
											Else
											{
												Return(One)
											}
										}
										Else
										{
											If(LEqual(_T_0, 0x02))
											{
												Return(SDGV)
											}
										}
									}
									Break
								}
							}
							Return(Zero)
						}
					}
					Device(PR18)
					{
						Name(_ADR, 0x08)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xB1, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
				}
			}
			Name(_PRW, Package(2) {0x0D, 0x03})
		}
		Device(EHC2)
		{
			Name(_ADR, 0x001A0000)
			OperationRegion(PWKE, PCI_Config, 0x62, 0x04)
			Field(PWKE, DWordAcc, NoLock, Preserve)
			{
				, 1,
				PWUC, 6,
			}
			Method(_PSW, 1, NotSerialized)
			{
				If(Arg0)
				{
					Store(Ones, PWUC)
				}
				Else
				{
					Store(Zero, PWUC)
				}
			}
			Method(_S3D, 0, NotSerialized)
			{
				Return(0x02)
			}
			Method(_S4D, 0, NotSerialized)
			{
				Return(0x02)
			}
			Device(HUBN)
			{
				Name(_ADR, Zero)
				Device(PR01)
				{
					Name(_ADR, One)
					Name(_UPC, Package(4) {0xFF, Zero, Zero, Zero})
					Name(_PLD, Package(1)
					{
						Buffer(0x10)
						{
							0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
							0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
						}
					})
					Device(PR11)
					{
						Name(_ADR, One)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
					Device(PR12)
					{
						Name(_ADR, 0x02)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE0, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
						Alias(SBV1, SDGV)
						Method(_DSM, 4, Serialized)
						{
							Name(_T_0, Zero)
							If(LEqual(Arg0, ToUUID("A5FC708F-87754BA6-BD0CBA90A1EC72F8")}))
							{
								While(One)
								{
									Store(ToInteger(Arg2), _T_0)
									If(LEqual(_T_0, Zero))
									{
										If(LEqual(Arg1, One))
										{
											Return(Buffer(One)
											{
												0x07
											})
										}
										Else
										{
											Return(Buffer(One)
											{
												0x00
											})
										}
									}
									Else
									{
										If(LEqual(_T_0, One))
										{
											If(LEqual(SDGV, 0xFF))
											{
												Return(Zero)
											}
											Else
											{
												Return(One)
											}
										}
										Else
										{
											If(LEqual(_T_0, 0x02))
											{
												Return(SDGV)
											}
										}
									}
									Break
								}
							}
							Return(Zero)
						}
					}
					Device(PR13)
					{
						Name(_ADR, 0x03)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE0, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
						Alias(SBV2, SDGV)
						Method(_DSM, 4, Serialized)
						{
							Name(_T_0, Zero)
							If(LEqual(Arg0, ToUUID("A5FC708F-87754BA6-BD0CBA90A1EC72F8")}))
							{
								While(One)
								{
									Store(ToInteger(Arg2), _T_0)
									If(LEqual(_T_0, Zero))
									{
										If(LEqual(Arg1, One))
										{
											Return(Buffer(One)
											{
												0x07
											})
										}
										Else
										{
											Return(Buffer(One)
											{
												0x00
											})
										}
									}
									Else
									{
										If(LEqual(_T_0, One))
										{
											If(LEqual(SDGV, 0xFF))
											{
												Return(Zero)
											}
											Else
											{
												Return(One)
											}
										}
										Else
										{
											If(LEqual(_T_0, 0x02))
											{
												Return(SDGV)
											}
										}
									}
									Break
								}
							}
							Return(Zero)
						}
					}
					Device(PR14)
					{
						Name(_ADR, 0x04)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xE1, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
					Device(PR15)
					{
						Name(_ADR, 0x05)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xB1, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
					Device(PR16)
					{
						Name(_ADR, 0x06)
						Name(_UPC, Package(4) {0xFF, 0xFF, Zero, Zero})
						Name(_PLD, Package(1)
						{
							Buffer(0x10)
							{
								0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
								0xB1, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
							}
						})
					}
				}
			}
			Name(_PRW, Package(2) {0x0D, 0x03})
		}
		Device(HDEF)
		{
			Name(_ADR, 0x001B0000)
			OperationRegion(HDAR, PCI_Config, 0x4C, 0x10)
			Field(HDAR, WordAcc, NoLock, Preserve)
			{
				DCKA, 1,
				, 7,
				DCKM, 1,
				, 6,
				DCKS, 1,
				Offset(0x8),	//Offset(8),
				Offset(0x9),	//Offset(9),
				, 7,
				PMES, 1,
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(WKMD)
				{
					Return(Package(2) {0x0D, 0x04})
				}
				Else
				{
					Return(Package(2) {0x0D, Zero})
				}
			}
		}
		Device(RP01)
		{
			Name(_ADR, 0x001C0000)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x04})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Scope(PXSX)
			{
				OperationRegion(WOLS, PCI_Config, 0x45, One)
				Field(WOLS, AnyAcc, NoLock, Preserve)
				{
					WOLA, 8,
				}
				Method(_PSW, 1, NotSerialized)
				{
					Store(Arg0, ^^^LPCB.EC.WOL)
				}
			}
			Name(PR05, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKA, Zero}, 
				Package(4) {0xFFFF, One, LNKB, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKC, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKD, Zero}
			})
			Name(AR05, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x10}, 
				Package(4) {0xFFFF, One, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x13}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR05)
				}
				Return(PR05)
			}
		}
		Device(RP02)
		{
			Name(_ADR, 0x001C0001)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
					Notify(PXSX, 0x02)
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x03})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Name(PR06, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKB, Zero}, 
				Package(4) {0xFFFF, One, LNKC, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKD, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKA, Zero}
			})
			Name(AR06, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x11}, 
				Package(4) {0xFFFF, One, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x13}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x10}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR06)
				}
				Return(PR06)
			}
		}
		Device(RP03)
		{
			Name(_ADR, 0x001C0002)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
					Notify(PXSX, 0x02)
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x03})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Name(PR07, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKC, Zero}, 
				Package(4) {0xFFFF, One, LNKD, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKA, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKB, Zero}
			})
			Name(AR07, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x12}, 
				Package(4) {0xFFFF, One, Zero, 0x13}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x10}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x11}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR07)
				}
				Return(PR07)
			}
		}
		Device(RP04)
		{
			Name(_ADR, 0x001C0003)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
					Notify(PXSX, 0x02)
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x03})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Name(PR08, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKD, Zero}, 
				Package(4) {0xFFFF, One, LNKA, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKB, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKC, Zero}
			})
			Name(AR08, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x13}, 
				Package(4) {0xFFFF, One, Zero, 0x10}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x12}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR08)
				}
				Return(PR08)
			}
		}
		Device(RP05)
		{
			Name(_ADR, 0x001C0004)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
					Notify(PXSX, 0x02)
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x03})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Name(PR09, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKA, Zero}, 
				Package(4) {0xFFFF, One, LNKB, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKC, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKD, Zero}
			})
			Name(AR09, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x10}, 
				Package(4) {0xFFFF, One, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x13}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR09)
				}
				Return(PR09)
			}
		}
		Device(RP06)
		{
			Name(_ADR, 0x001C0005)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
					Notify(PXSX, 0x02)
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x03})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Name(PR0C, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKB, Zero}, 
				Package(4) {0xFFFF, One, LNKC, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKD, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKA, Zero}
			})
			Name(AR0C, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x11}, 
				Package(4) {0xFFFF, One, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x13}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x10}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR0C)
				}
				Return(PR0C)
			}
		}
		Device(RP07)
		{
			Name(_ADR, 0x001C0006)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
					Notify(PXSX, 0x02)
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x03})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Name(PR0D, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKC, Zero}, 
				Package(4) {0xFFFF, One, LNKD, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKE, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKF, Zero}
			})
			Name(AR0D, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x12}, 
				Package(4) {0xFFFF, One, Zero, 0x13}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x14}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x15}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR0D)
				}
				Return(PR0D)
			}
		}
		Device(RP08)
		{
			Name(_ADR, 0x001C0007)
			OperationRegion(PXCS, PCI_Config, 0x40, 0xC0)
			Field(PXCS, AnyAcc, NoLock, Preserve)
			{
				Offset(0x10),	//Offset(16),
				L0SE, 1,
				, 7,
				, 8,
				Offset(0x13),	//Offset(19),
				, 5,
				LASX, 1,
				Offset(0x1A),	//Offset(26),
				ABPX, 1,
				, 2,
				PDCX, 1,
				, 2,
				PDSX, 1,
				, 1,
				LSCX, 1,
				Offset(0x20),	//Offset(32),
				Offset(0x22),	//Offset(34),
				PSPX, 1,
				Offset(0x98),	//Offset(152),
				Offset(0x9B),	//Offset(155),
				, 6,
				HPEX, 1,
				PMEX, 1,
				Offset(0x9F),	//Offset(159),
				, 6,
				HPSX, 1,
				PMSX, 1,
			}
			Device(PXSX)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
			Method(HPME, 0, Serialized)
			{
				If(PMSX)
				{
					Store(0xC8, Local0)
					While(Local0)
					{
						Store(One, PMSX)
						If(PMSX)
						{
							Decrement(Local0)
						}
						Else
						{
							Store(Zero, Local0)
						}
					}
					Notify(PXSX, 0x02)
				}
			}
			Method(_PRW, 0, NotSerialized)
			{
				If(PMEE)
				{
					Return(Package(2) {0x09, 0x03})
				}
				Else
				{
					Return(Package(2) {0x09, Zero})
				}
			}
			Name(PR0E, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKD, Zero}, 
				Package(4) {0xFFFF, One, LNKA, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKB, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKC, Zero}
			})
			Name(AR0E, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x13}, 
				Package(4) {0xFFFF, One, Zero, 0x10}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x12}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR0E)
				}
				Return(PR0E)
			}
		}
		Device(SAT0)
		{
			Name(_ADR, 0x001F0002)
		}
		Device(SAT1)
		{
			Name(_ADR, 0x001F0005)
		}
		Device(SBUS)
		{
			Name(_ADR, 0x001F0003)
			OperationRegion(SMBP, PCI_Config, 0x40, 0xC0)
			Field(SMBP, DWordAcc, NoLock, Preserve)
			{
				, 2,
				I2CE, 1,
			}
			OperationRegion(SMPB, PCI_Config, 0x20, 0x04)
			Field(SMPB, DWordAcc, NoLock, Preserve)
			{
				, 5,
				SBAR, 11,
			}
			OperationRegion(SMBI, SystemIO, ShiftLeft(SBAR, 0x05), 0x10)
			Field(SMBI, ByteAcc, NoLock, Preserve)
			{
				HSTS, 8,
				, 8,
				HCON, 8,
				HCOM, 8,
				TXSA, 8,
				DAT0, 8,
				DAT1, 8,
				HBDR, 8,
				PECR, 8,
				RXSA, 8,
				SDAT, 16,
			}
			Method(SSXB, 2, Serialized)
			{
				If(STRT())
				{
					Return(Zero)
				}
				Store(Zero, I2CE)
				Store(0xBF, HSTS)
				Store(Arg0, TXSA)
				Store(Arg1, HCOM)
				Store(0x48, HCON)
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(One)
				}
				Return(Zero)
			}
			Method(SRXB, 1, Serialized)
			{
				If(STRT())
				{
					Return(0xFFFF)
				}
				Store(Zero, I2CE)
				Store(0xBF, HSTS)
				Store(Or(Arg0, One), TXSA)
				Store(0x44, HCON)
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(DAT0)
				}
				Return(0xFFFF)
			}
			Method(SWRB, 3, Serialized)
			{
				If(STRT())
				{
					Return(Zero)
				}
				Store(Zero, I2CE)
				Store(0xBF, HSTS)
				Store(Arg0, TXSA)
				Store(Arg1, HCOM)
				Store(Arg2, DAT0)
				Store(0x48, HCON)
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(One)
				}
				Return(Zero)
			}
			Method(SRDB, 2, Serialized)
			{
				If(STRT())
				{
					Return(0xFFFF)
				}
				Store(Zero, I2CE)
				Store(0xBF, HSTS)
				Store(Or(Arg0, One), TXSA)
				Store(Arg1, HCOM)
				Store(0x48, HCON)
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(DAT0)
				}
				Return(0xFFFF)
			}
			Method(SWRW, 3, Serialized)
			{
				If(STRT())
				{
					Return(Zero)
				}
				Store(Zero, I2CE)
				Store(0xBF, HSTS)
				Store(Arg0, TXSA)
				Store(Arg1, HCOM)
				And(Arg2, 0xFF, DAT1)
				And(ShiftRight(Arg2, 0x08), 0xFF, DAT0)
				Store(0x4C, HCON)
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(One)
				}
				Return(Zero)
			}
			Method(SRDW, 2, Serialized)
			{
				If(STRT())
				{
					Return(0xFFFF)
				}
				Store(Zero, I2CE)
				Store(0xBF, HSTS)
				Store(Or(Arg0, One), TXSA)
				Store(Arg1, HCOM)
				Store(0x4C, HCON)
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(Or(ShiftLeft(DAT0, 0x08), DAT1))
				}
				Return(Ones)
			}
			Method(SBLW, 4, Serialized)
			{
				If(STRT())
				{
					Return(Zero)
				}
				Store(Arg3, I2CE)
				Store(0xBF, HSTS)
				Store(Arg0, TXSA)
				Store(Arg1, HCOM)
				Store(SizeOf(Arg2), DAT0)
				Store(Zero, Local1)
				Store(DerefOf(Index(Arg2, Zero)), HBDR)
				Store(0x54, HCON)
				While(LGreater(SizeOf(Arg2), Local1))
				{
					Store(0x0FA0, Local0)
					While(LAnd(LNot(And(HSTS, 0x80)), Local0))
					{
						Decrement(Local0)
						Stall(0x32)
					}
					If(LNot(Local0))
					{
						KILL()
						Return(Zero)
					}
					Store(0x80, HSTS)
					Increment(Local1)
					If(LGreater(SizeOf(Arg2), Local1))
					{
						Store(DerefOf(Index(Arg2, Local1)), HBDR)
					}
				}
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(One)
				}
				Return(Zero)
			}
			Method(SBLR, 3, Serialized)
			{
				Name(TBUF, Buffer(0x0100){})
				If(STRT())
				{
					Return(Zero)
				}
				Store(Arg2, I2CE)
				Store(0xBF, HSTS)
				Store(Or(Arg0, One), TXSA)
				Store(Arg1, HCOM)
				Store(0x54, HCON)
				Store(0x0FA0, Local0)
				While(LAnd(LNot(And(HSTS, 0x80)), Local0))
				{
					Decrement(Local0)
					Stall(0x32)
				}
				If(LNot(Local0))
				{
					KILL()
					Return(Zero)
				}
				Store(DAT0, Index(TBUF, Zero))
				Store(0x80, HSTS)
				Store(One, Local1)
				While(LLess(Local1, DerefOf(Index(TBUF, Zero))))
				{
					Store(0x0FA0, Local0)
					While(LAnd(LNot(And(HSTS, 0x80)), Local0))
					{
						Decrement(Local0)
						Stall(0x32)
					}
					If(LNot(Local0))
					{
						KILL()
						Return(Zero)
					}
					Store(HBDR, Index(TBUF, Local1))
					Store(0x80, HSTS)
					Increment(Local1)
				}
				If(COMP())
				{
					Or(HSTS, 0xFF, HSTS)
					Return(TBUF)
				}
				Return(Zero)
			}
			Method(STRT, 0, Serialized)
			{
				Store(0xC8, Local0)
				While(Local0)
				{
					If(And(HSTS, 0x40))
					{
						Decrement(Local0)
						Sleep(One)
						If(LEqual(Local0, Zero))
						{
							Return(One)
						}
					}
					Else
					{
						Store(Zero, Local0)
					}
				}
				Store(0x0FA0, Local0)
				While(Local0)
				{
					If(And(HSTS, One))
					{
						Decrement(Local0)
						Stall(0x32)
						If(LEqual(Local0, Zero))
						{
							KILL()
						}
					}
					Else
					{
						Return(Zero)
					}
				}
				Return(One)
			}
			Method(COMP, 0, Serialized)
			{
				Store(0x0FA0, Local0)
				While(Local0)
				{
					If(And(HSTS, 0x02))
					{
						Return(One)
					}
					Else
					{
						Decrement(Local0)
						Stall(0x32)
						If(LEqual(Local0, Zero))
						{
							KILL()
						}
					}
				}
				Return(Zero)
			}
			Method(KILL, 0, Serialized)
			{
				Or(HCON, 0x02, HCON)
				Or(HSTS, 0xFF, HSTS)
			}
		}
	}
	Scope(_SB.PCI0.SAT0)
	{
		Device(PRT5)
		{
			Name(_ADR, 0x0005FFFF)
			Method(_DSM, 4, Serialized)
			{
				Name(_T_1, Zero)
				Name(_T_0, Zero)
				If(LEqual(Arg0, ToUUID("BDFAEF30-AEBB11DE-8A390800200C9A66")}))
				{
					While(One)
					{
						Store(ToInteger(Arg2), _T_0)
						If(LEqual(_T_0, Zero))
						{
							While(One)
							{
								Store(ToInteger(Arg1), _T_1)
								If(LEqual(_T_1, One))
								{
									If(LEqual(PFLV, FDTP))
									{
										Return(Buffer(One)
										{
											0x00
										})
									}
									Return(Buffer(One)
									{
										0x0F
									})
								}
								Else
								{
									Return(Buffer(One)
									{
										0x00
									})
								}
								Break
							}
						}
						Else
						{
							If(LEqual(_T_0, One))
							{
								Return(One)
							}
							Else
							{
								If(LEqual(_T_0, 0x02))
								{
									Store(Zero, GPE3)
									If(LEqual(And(GL00, 0x08), 0x08))
									{
										Or(GIV0, 0x08, GIV0)
									}
									Else
									{
										And(GIV0, 0xF7, GIV0)
									}
									And(GIO0, 0xF7, GIO0)
									Sleep(0x32)
									And(GL08, 0xEF, GL08)
									Sleep(0xC8)
									Or(GIO0, 0x08, GIO0)
									Store(One, GPS3)
									Store(One, GPE3)
									Return(One)
								}
								Else
								{
									If(LEqual(_T_0, 0x03))
									{
										Store(Zero, GPE3)
										Store(One, GPS3)
										And(GIO0, 0xF7, GIO0)
										Sleep(0x32)
										Or(GL08, 0x10, GL08)
										Sleep(0x012C)
										Or(GIO0, 0x08, GIO0)
										Return(One)
									}
									Else
									{
										Return(Zero)
									}
								}
							}
						}
						Break
					}
				}
				Else
				{
					Return(Zero)
				}
			}
		}
	}
	Scope(_GPE)
	{
		Method(_L13, 0, NotSerialized)
		{
			If(LEqual(PFLV, FDTP))
			{
				Return(Zero)
			}
			Store(Zero, GPE3)
			Or(GL08, 0x10, GL08)
			Notify(\_SB.PCI0.SAT0, 0x85)
			Return(Zero)
		}
	}
	Scope(_SB.PCI0)
	{
		Device(PEG0)
		{
			Name(_ADR, 0x00010000)
			Name(_PRW, Package(2) {0x09, 0x04})
			Name(PR0A, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKA, Zero}, 
				Package(4) {0xFFFF, One, LNKB, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKC, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKD, Zero}
			})
			Name(AR0A, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x10}, 
				Package(4) {0xFFFF, One, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x13}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR0A)
				}
				Return(PR0A)
			}
			Device(PEGP)
			{
				Name(_ADR, Zero)
				Name(_PRW, Package(2) {0x09, 0x04})
			}
		}
		Device(PEG1)
		{
			Name(_ADR, 0x00010001)
			Name(_PRW, Package(2) {0x09, 0x04})
			Name(PR02, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKB, Zero}, 
				Package(4) {0xFFFF, One, LNKC, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKD, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKA, Zero}
			})
			Name(AR02, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x10}, 
				Package(4) {0xFFFF, One, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x13}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR02)
				}
				Return(PR02)
			}
		}
		Device(PEG2)
		{
			Name(_ADR, 0x00010002)
			Name(_PRW, Package(2) {0x09, 0x04})
			Name(PR03, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKC, Zero}, 
				Package(4) {0xFFFF, One, LNKD, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKA, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKB, Zero}
			})
			Name(AR03, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x10}, 
				Package(4) {0xFFFF, One, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x13}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR03)
				}
				Return(PR03)
			}
		}
		Device(PEG3)
		{
			Name(_ADR, 0x00060000)
			Name(_PRW, Package(2) {0x09, 0x04})
			Name(PR0B, Package(4)
			{
				Package(4) {0xFFFF, Zero, LNKD, Zero}, 
				Package(4) {0xFFFF, One, LNKA, Zero}, 
				Package(4) {0xFFFF, 0x02, LNKB, Zero}, 
				Package(4) {0xFFFF, 0x03, LNKC, Zero}
			})
			Name(AR0B, Package(4)
			{
				Package(4) {0xFFFF, Zero, Zero, 0x10}, 
				Package(4) {0xFFFF, One, Zero, 0x11}, 
				Package(4) {0xFFFF, 0x02, Zero, 0x12}, 
				Package(4) {0xFFFF, 0x03, Zero, 0x13}
			})
			Method(_PRT, 0, NotSerialized)
			{
				If(PICM)
				{
					Return(AR0B)
				}
				Return(PR0B)
			}
		}
		Device(B0D4)
		{
			Name(_ADR, 0x00040000)
		}
		Device(GFX0)
		{
			Name(_ADR, 0x00020000)
			Method(PCPC, 0, NotSerialized)
			{
				If(ECON) {}
				ECST
				0x6F
			}
			Method(PAPR, 0, NotSerialized)
			{
				If(ECON) {}
				Else
				{
					Return(Zero)
				}
			}
			Method(_DOS, 1, NotSerialized)
			{
				Store(And(Arg0, 0x07), DSEN)
				If(LEqual(And(Arg0, 0x03), Zero))
				{
					If(CondRefOf(HDOS))
					{
						HDOS
					}
				}
			}
			Method(_DOD, 0, NotSerialized)
			{
				If(CondRefOf(IDAB))
				{
					IDAB
				}
				Else
				{
					Store(Zero, NDID)
					If(LNotEqual(DIDL, Zero))
					{
						Store(SDDL(DIDL), DID1)
					}
					If(LNotEqual(DDL2, Zero))
					{
						Store(SDDL(DDL2), DID2)
					}
					If(LNotEqual(DDL3, Zero))
					{
						Store(SDDL(DDL3), DID3)
					}
					If(LNotEqual(DDL4, Zero))
					{
						Store(SDDL(DDL4), DID4)
					}
					If(LNotEqual(DDL5, Zero))
					{
						Store(SDDL(DDL5), DID5)
					}
					If(LNotEqual(DDL6, Zero))
					{
						Store(SDDL(DDL6), DID6)
					}
					If(LNotEqual(DDL7, Zero))
					{
						Store(SDDL(DDL7), DID7)
					}
					If(LNotEqual(DDL8, Zero))
					{
						Store(SDDL(DDL8), DID8)
					}
				}
				If(LEqual(NDID, One))
				{
					Name(TMP1, Package(1) {Ones})
					Store(Or(0x00010000, DID1), Index(TMP1, Zero))
					Return(TMP1)
				}
				If(LEqual(NDID, 0x02))
				{
					Name(TMP2, Package(2) {Ones, Ones})
					Store(Or(0x00010000, DID1), Index(TMP2, Zero))
					Store(Or(0x00010000, DID2), Index(TMP2, One))
					Return(TMP2)
				}
				If(LEqual(NDID, 0x03))
				{
					Name(TMP3, Package(3) {Ones, Ones, Ones})
					Store(Or(0x00010000, DID1), Index(TMP3, Zero))
					Store(Or(0x00010000, DID2), Index(TMP3, One))
					Store(Or(0x00010000, DID3), Index(TMP3, 0x02))
					Return(TMP3)
				}
				If(LEqual(NDID, 0x04))
				{
					Name(TMP4, Package(4) {Ones, Ones, Ones, Ones})
					Store(Or(0x00010000, DID1), Index(TMP4, Zero))
					Store(Or(0x00010000, DID2), Index(TMP4, One))
					Store(Or(0x00010000, DID3), Index(TMP4, 0x02))
					Store(Or(0x00010000, DID4), Index(TMP4, 0x03))
					Return(TMP4)
				}
				If(LEqual(NDID, 0x05))
				{
					Name(TMP5, Package(5) {Ones, Ones, Ones, Ones, Ones})
					Store(Or(0x00010000, DID1), Index(TMP5, Zero))
					Store(Or(0x00010000, DID2), Index(TMP5, One))
					Store(Or(0x00010000, DID3), Index(TMP5, 0x02))
					Store(Or(0x00010000, DID4), Index(TMP5, 0x03))
					Store(Or(0x00010000, DID5), Index(TMP5, 0x04))
					Return(TMP5)
				}
				If(LEqual(NDID, 0x06))
				{
					Name(TMP6, Package(6) {Ones, Ones, Ones, Ones, Ones, Ones})
					Store(Or(0x00010000, DID1), Index(TMP6, Zero))
					Store(Or(0x00010000, DID2), Index(TMP6, One))
					Store(Or(0x00010000, DID3), Index(TMP6, 0x02))
					Store(Or(0x00010000, DID4), Index(TMP6, 0x03))
					Store(Or(0x00010000, DID5), Index(TMP6, 0x04))
					Store(Or(0x00010000, DID6), Index(TMP6, 0x05))
					Return(TMP6)
				}
				If(LEqual(NDID, 0x07))
				{
					Name(TMP7, Package(7) {Ones, Ones, Ones, Ones, Ones, Ones, Ones})
					Store(Or(0x00010000, DID1), Index(TMP7, Zero))
					Store(Or(0x00010000, DID2), Index(TMP7, One))
					Store(Or(0x00010000, DID3), Index(TMP7, 0x02))
					Store(Or(0x00010000, DID4), Index(TMP7, 0x03))
					Store(Or(0x00010000, DID5), Index(TMP7, 0x04))
					Store(Or(0x00010000, DID6), Index(TMP7, 0x05))
					Store(Or(0x00010000, DID7), Index(TMP7, 0x06))
					Return(TMP7)
				}
				If(LEqual(NDID, 0x08))
				{
					Name(TMP8, Package(8) {Ones, Ones, Ones, Ones, Ones, Ones, Ones, Ones})
					Store(Or(0x00010000, DID1), Index(TMP8, Zero))
					Store(Or(0x00010000, DID2), Index(TMP8, One))
					Store(Or(0x00010000, DID3), Index(TMP8, 0x02))
					Store(Or(0x00010000, DID4), Index(TMP8, 0x03))
					Store(Or(0x00010000, DID5), Index(TMP8, 0x04))
					Store(Or(0x00010000, DID6), Index(TMP8, 0x05))
					Store(Or(0x00010000, DID7), Index(TMP8, 0x06))
					Store(Or(0x00010000, DID8), Index(TMP8, 0x07))
					Return(TMP8)
				}
				If(LEqual(NDID, 0x09))
				{
					If(CondRefOf(HWID))
					{
						Return(HWID)
					}
				}
				Return(Package(1) {0x0400})
			}
			Device(DD01)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID1, Zero))
					{
						Return(One)
					}
					Else
					{
						Return(And(0xFFFF, DID1))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					Return(CDDS(DID1))
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD1)
					}
					Return(NDDS(DID1))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
			}
			Device(DD02)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID2, Zero))
					{
						Return(0x02)
					}
					Else
					{
						Return(And(0xFFFF, DID2))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					If(LEqual(LIDS, Zero))
					{
						Return(Zero)
					}
					Return(CDDS(DID2))
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD2)
					}
					Return(NDDS(DID2))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
				Method(_BCL, 0, NotSerialized)
				{
					Store(0x8010, BTM0)
					Store(0x8A16, BTM1)
					Store(0x941C, BTM2)
					Store(0x9E25, BTM3)
					Store(0xA831, BTM4)
					Store(0xB241, BTM5)
					Store(0xBC56, BTM6)
					Store(0xC671, BTM7)
					Store(0xD094, BTM8)
					Store(0xDAC3, BTM9)
					Store(0xE4FF, BTMA)
					If(LEqual(LCDD, 0x15A2AF0D))
					{
						Store(0x8012, BTM0)
						Store(0x8A18, BTM1)
						Store(0x941F, BTM2)
						Store(0x9E29, BTM3)
						Store(0xA836, BTM4)
						Store(0xB248, BTM5)
						Store(0xBC5F, BTM6)
						Store(0xC67E, BTM7)
						Store(0xD0A6, BTM8)
						Store(0xDADA, BTM9)
						Store(0xE4FF, BTMA)
					}
					Return(Package(13)
					{
						0x64, 0x32, Zero, 0x0A, 0x14, 0x1E, 0x28, 0x32, 0x3C, 0x46, 0x50,
						0x5A, 0x64
					})
				}
				Name(LGP1, Package(11) {0x06, 0x08, 0x0A, 0x0E, 0x13, 0x19, 0x21, 0x2C, 0x3A, 0x4C, 0x64})
				Name(CMO1, Package(11) {0x07, 0x09, 0x0C, 0x0F, 0x14, 0x1B, 0x24, 0x2F, 0x3E, 0x52, 0x64})
				Method(_BCM, 1, NotSerialized)
				{
					If(LAnd(LGreaterEqual(Arg0, Zero), LLessEqual(Arg0, 0x64)))
					{
						Store(Arg0, BRTL)
						Divide(Arg0, 0x0A, Local2, Local1)
						Store(DerefOf(Index(LGP1, Local1)), Local0)
						If(LEqual(LCDD, 0x15A2AF0D))
						{
							Store(DerefOf(Index(CMO1, Local1)), Local0)
						}
						AINT(One, Local0)
					}
					^^^LPCB.EC.STBL()
				}
				Method(_BQC, 0, NotSerialized)
				{
					Return(BRTL)
				}
			}
			Device(DD03)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID3, Zero))
					{
						Return(0x03)
					}
					Else
					{
						Return(And(0xFFFF, DID3))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					If(LEqual(DID3, Zero))
					{
						Return(0x0B)
					}
					Else
					{
						Return(CDDS(DID3))
					}
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD3)
					}
					Return(NDDS(DID3))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
			}
			Device(DD04)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID4, Zero))
					{
						Return(0x04)
					}
					Else
					{
						Return(And(0xFFFF, DID4))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					If(LEqual(DID4, Zero))
					{
						Return(0x0B)
					}
					Else
					{
						Return(CDDS(DID4))
					}
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD4)
					}
					Return(NDDS(DID4))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
			}
			Device(DD05)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID5, Zero))
					{
						Return(0x05)
					}
					Else
					{
						Return(And(0xFFFF, DID5))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					If(LEqual(DID5, Zero))
					{
						Return(0x0B)
					}
					Else
					{
						Return(CDDS(DID5))
					}
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD5)
					}
					Return(NDDS(DID5))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
			}
			Device(DD06)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID6, Zero))
					{
						Return(0x06)
					}
					Else
					{
						Return(And(0xFFFF, DID6))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					If(LEqual(DID6, Zero))
					{
						Return(0x0B)
					}
					Else
					{
						Return(CDDS(DID6))
					}
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD6)
					}
					Return(NDDS(DID6))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
			}
			Device(DD07)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID7, Zero))
					{
						Return(0x07)
					}
					Else
					{
						Return(And(0xFFFF, DID7))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					If(LEqual(DID7, Zero))
					{
						Return(0x0B)
					}
					Else
					{
						Return(CDDS(DID7))
					}
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD7)
					}
					Return(NDDS(DID7))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
			}
			Device(DD08)
			{
				Method(_ADR, 0, Serialized)
				{
					If(LEqual(DID8, Zero))
					{
						Return(0x08)
					}
					Else
					{
						Return(And(0xFFFF, DID8))
					}
				}
				Method(_DCS, 0, NotSerialized)
				{
					If(LEqual(DID8, Zero))
					{
						Return(0x0B)
					}
					Else
					{
						Return(CDDS(DID8))
					}
				}
				Method(_DGS, 0, NotSerialized)
				{
					If(LAnd(LEqual(And(SGMD, One), One), CondRefOf(SNXD)))
					{
						Return(NXD8)
					}
					Return(NDDS(DID8))
				}
				Method(_DSS, 1, NotSerialized)
				{
					If(LEqual(And(Arg0, 0xC0000000), 0xC0000000))
					{
						Store(NSTE, CSTE)
					}
				}
			}
			Method(SDDL, 1, NotSerialized)
			{
				Increment(NDID)
				Store(And(Arg0, 0x0F0F), Local0)
				Or(0x80000000, Local0, Local1)
				If(LEqual(DIDL, Local0))
				{
					Return(Local1)
				}
				If(LEqual(DDL2, Local0))
				{
					Return(Local1)
				}
				If(LEqual(DDL3, Local0))
				{
					Return(Local1)
				}
				If(LEqual(DDL4, Local0))
				{
					Return(Local1)
				}
				If(LEqual(DDL5, Local0))
				{
					Return(Local1)
				}
				If(LEqual(DDL6, Local0))
				{
					Return(Local1)
				}
				If(LEqual(DDL7, Local0))
				{
					Return(Local1)
				}
				If(LEqual(DDL8, Local0))
				{
					Return(Local1)
				}
				Return(Zero)
			}
			Method(CDDS, 1, NotSerialized)
			{
				Store(And(Arg0, 0x0F0F), Local0)
				If(LEqual(Zero, Local0))
				{
					Return(0x1D)
				}
				If(LEqual(CADL, Local0))
				{
					Return(0x1F)
				}
				If(LEqual(CAL2, Local0))
				{
					Return(0x1F)
				}
				If(LEqual(CAL3, Local0))
				{
					Return(0x1F)
				}
				If(LEqual(CAL4, Local0))
				{
					Return(0x1F)
				}
				If(LEqual(CAL5, Local0))
				{
					Return(0x1F)
				}
				If(LEqual(CAL6, Local0))
				{
					Return(0x1F)
				}
				If(LEqual(CAL7, Local0))
				{
					Return(0x1F)
				}
				If(LEqual(CAL8, Local0))
				{
					Return(0x1F)
				}
				Return(0x1D)
			}
			Method(NDDS, 1, NotSerialized)
			{
				Store(And(Arg0, 0x0F0F), Local0)
				If(LEqual(Zero, Local0))
				{
					Return(Zero)
				}
				If(LEqual(NADL, Local0))
				{
					Return(One)
				}
				If(LEqual(NDL2, Local0))
				{
					Return(One)
				}
				If(LEqual(NDL3, Local0))
				{
					Return(One)
				}
				If(LEqual(NDL4, Local0))
				{
					Return(One)
				}
				If(LEqual(NDL5, Local0))
				{
					Return(One)
				}
				If(LEqual(NDL6, Local0))
				{
					Return(One)
				}
				If(LEqual(NDL7, Local0))
				{
					Return(One)
				}
				If(LEqual(NDL8, Local0))
				{
					Return(One)
				}
				Return(Zero)
			}
			Scope(^^PCI0)
			{
				OperationRegion(MCHP, PCI_Config, 0x40, 0xC0)
				Field(MCHP, AnyAcc, NoLock, Preserve)
				{
					Offset(0x60),	//Offset(96),
					TASM, 10,
					, 6,
				}
			}
			OperationRegion(IGDP, PCI_Config, 0x40, 0xC0)
			Field(IGDP, AnyAcc, NoLock, Preserve)
			{
				Offset(0x12),	//Offset(18),
				, 1,
				GIVD, 1,
				, 2,
				GUMA, 3,
				Offset(0x14),	//Offset(20),
				, 4,
				GMFN, 1,
				Offset(0x18),	//Offset(24),
				Offset(0xA4),	//Offset(164),
				ASLE, 8,
				Offset(0xA8),	//Offset(168),
				GSSE, 1,
				GSSB, 14,
				GSES, 1,
				Offset(0xB0),	//Offset(176),
				Offset(0xB1),	//Offset(177),
				, 4,
				CDVL, 1,
				, 3,
				Offset(0xB5),	//Offset(181),
				LBPC, 8,
				Offset(0xBC),	//Offset(188),
				ASLS, 32,
			}
			OperationRegion(IGDM, SystemMemory, ASLB, 0x2000)
			Field(IGDM, AnyAcc, NoLock, Preserve)
			{
				SIGN, 128,
				SIZE, 32,
				OVER, 32,
				SVER, 256,
				VVER, 128,
				GVER, 128,
				MBOX, 32,
				DMOD, 32,
				Offset(0x100),	//Offset(256),
				DRDY, 32,
				CSTS, 32,
				CEVT, 32,
				Offset(0x120),	//Offset(288),
				DIDL, 32,
				DDL2, 32,
				DDL3, 32,
				DDL4, 32,
				DDL5, 32,
				DDL6, 32,
				DDL7, 32,
				DDL8, 32,
				CPDL, 32,
				CPL2, 32,
				CPL3, 32,
				CPL4, 32,
				CPL5, 32,
				CPL6, 32,
				CPL7, 32,
				CPL8, 32,
				CADL, 32,
				CAL2, 32,
				CAL3, 32,
				CAL4, 32,
				CAL5, 32,
				CAL6, 32,
				CAL7, 32,
				CAL8, 32,
				NADL, 32,
				NDL2, 32,
				NDL3, 32,
				NDL4, 32,
				NDL5, 32,
				NDL6, 32,
				NDL7, 32,
				NDL8, 32,
				ASLP, 32,
				TIDX, 32,
				CHPD, 32,
				CLID, 32,
				CDCK, 32,
				SXSW, 32,
				EVTS, 32,
				CNOT, 32,
				NRDY, 32,
				Offset(0x200),	//Offset(512),
				SCIE, 1,
				GEFC, 4,
				GXFC, 3,
				GESF, 8,
				Offset(0x204),	//Offset(516),
				PARM, 32,
				DSLP, 32,
				Offset(0x300),	//Offset(768),
				ARDY, 32,
				ASLC, 32,
				TCHE, 32,
				ALSI, 32,
				BCLP, 32,
				PFIT, 32,
				CBLV, 32,
				BTM0, 16,
				BTM1, 16,
				BTM2, 16,
				BTM3, 16,
				BTM4, 16,
				BTM5, 16,
				BTM6, 16,
				BTM7, 16,
				BTM8, 16,
				BTM9, 16,
				BTMA, 16,
				Offset(0x344),	//Offset(836),
				CPFM, 32,
				EPFM, 32,
				PLUT, 592,
				PFMB, 32,
				CCDV, 32,
				PCFT, 32,
				Offset(0x400),	//Offset(1024),
				GVD1, 49152,
				PHED, 32,
				BDDC, 2048,
			}
			Name(DBTB, Package(21)
			{
				Zero, 0x07, 0x38, 0x01C0, 0x0E00, 0x3F, 0x01C7, 0x0E07, 0x01F8, 0x0E38,
				0x0FC0, Zero, Zero, Zero, Zero, Zero, 0x7000, 0x7007, 0x7038, 0x71C0,
				0x7E00
			})
			Name(CDCT, Package(5)
			{
				Package(2) {0xE4, 0x0140}, 
				Package(2) {0xDE, 0x014D}, 
				Package(2) {0xDE, 0x014D}, 
				Package(2) {Zero, Zero}, 
				Package(2) {0xDE, 0x014D}
			})
			Name(SUCC, One)
			Name(NVLD, 0x02)
			Name(CRIT, 0x04)
			Name(NCRT, 0x06)
			Method(GSCI, 0, Serialized)
			{
				Method(GBDA, 0, Serialized)
				{
					If(LEqual(GESF, Zero))
					{
						Store(0x0679, PARM)
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, One))
					{
						Store(0x0240, PARM)
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x04))
					{
						And(PARM, 0xEFFF0000, PARM)
						And(PARM, ShiftLeft(DerefOf(Index(DBTB, IBTT)), 0x10), PARM)
						Or(IBTT, PARM, PARM)
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x05))
					{
						Store(IPSC, PARM)
						Or(PARM, ShiftLeft(IPAT, 0x08), PARM)
						Add(PARM, 0x0100, PARM)
						Or(PARM, ShiftLeft(LIDS, 0x10), PARM)
						Add(PARM, 0x00010000, PARM)
						Or(PARM, ShiftLeft(IBIA, 0x14), PARM)
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x06))
					{
						Store(ITVF, PARM)
						Or(PARM, ShiftLeft(ITVM, 0x04), PARM)
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x07))
					{
						Store(GIVD, PARM)
						Xor(PARM, One, PARM)
						Or(PARM, ShiftLeft(GMFN, One), PARM)
						Or(PARM, 0x1800, PARM)
						Or(PARM, ShiftLeft(IDMS, 0x11), PARM)
						Or(ShiftLeft(DerefOf(Index(DerefOf(Index(CDCT, HVCO)), CDVL)), 0x15), PARM, PARM)
						Store(One, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x0A))
					{
						Store(Zero, PARM)
						If(ISSC)
						{
							Or(PARM, 0x03, PARM)
						}
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x0B))
					{
						Store(KSV0, PARM)
						Store(KSV1, GESF)
						Return(SUCC)
					}
					Store(Zero, GESF)
					Return(CRIT)
				}
				Method(SBCB, 0, Serialized)
				{
					If(LEqual(GESF, Zero))
					{
						Store(Zero, PARM)
						Store(0x000F87FD, PARM)
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, One))
					{
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x03))
					{
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x04))
					{
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x05))
					{
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x06))
					{
						Store(And(PARM, 0x0F), ITVF)
						Store(ShiftRight(And(PARM, 0xF0), 0x04), ITVM)
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x07))
					{
						If(LEqual(PARM, Zero))
						{
							Store(CLID, Local0)
							If(And(0x80000000, Local0))
							{
								And(CLID, 0x0F, CLID)
								GLID(CLID)
							}
						}
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x08))
					{
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x09))
					{
						And(PARM, 0xFF, IBTT)
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x0A))
					{
						And(PARM, 0xFF, IPSC)
						If(And(ShiftRight(PARM, 0x08), 0xFF))
						{
							And(ShiftRight(PARM, 0x08), 0xFF, IPAT)
							Decrement(IPAT)
						}
						And(ShiftRight(PARM, 0x14), 0x07, IBIA)
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x0B))
					{
						And(ShiftRight(PARM, One), One, IF1E)
						If(And(PARM, 0x0001E000))
						{
							And(ShiftRight(PARM, 0x0D), 0x0F, IDMS)
						}
						Else
						{
							And(ShiftRight(PARM, 0x11), 0x0F, IDMS)
						}
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x10))
					{
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x11))
					{
						Store(ShiftLeft(LIDS, 0x08), PARM)
						Add(PARM, 0x0100, PARM)
						Store(Zero, GESF)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x12))
					{
						If(And(PARM, One))
						{
							If(LEqual(ShiftRight(PARM, One), One))
							{
								Store(One, ISSC)
							}
							Else
							{
								Store(Zero, GESF)
								Return(CRIT)
							}
						}
						Else
						{
							Store(Zero, ISSC)
						}
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x13))
					{
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					If(LEqual(GESF, 0x14))
					{
						And(PARM, 0x0F, PAVP)
						Store(Zero, GESF)
						Store(Zero, PARM)
						Return(SUCC)
					}
					Store(Zero, GESF)
					Return(SUCC)
				}
				If(LEqual(GEFC, 0x04))
				{
					Store(GBDA, GXFC)
				}
				If(LEqual(GEFC, 0x06))
				{
					Store(SBCB, GXFC)
				}
				Store(Zero, GEFC)
				Store(One, SCIS)
				Store(Zero, GSSE)
				Store(Zero, SCIE)
				Return(Zero)
			}
			Method(PDRD, 0, NotSerialized)
			{
				If(LNot(DRDY))
				{
					Sleep(ASLP)
				}
				Return(LNot(DRDY))
			}
			Method(PSTS, 0, NotSerialized)
			{
				If(LGreater(CSTS, 0x02))
				{
					Sleep(ASLP)
				}
				Return(LEqual(CSTS, 0x03))
			}
			Method(GNOT, 2, NotSerialized)
			{
				If(PDRD())
				{
					Return(One)
				}
				Store(Arg0, CEVT)
				Store(0x03, CSTS)
				If(LAnd(LEqual(CHPD, Zero), LEqual(Arg1, Zero)))
				{
					If(LOr(LGreater(OSYS, 0x07D0), LLess(OSYS, 0x07D6)))
					{
						Notify(PCI0, Arg1)
					}
					Else
					{
						Notify(GFX0, Arg1)
					}
				}
				If(CondRefOf(HNOT))
				{
					HNOT
					Arg0
				}
				Else
				{
					Notify(GFX0, 0x80)
				}
				Return(Zero)
			}
			Method(GHDS, 1, NotSerialized)
			{
				Store(Arg0, TIDX)
				Return(GNOT(One, Zero))
			}
			Method(GLID, 1, NotSerialized)
			{
				If(LEqual(Arg0, One))
				{
					Store(0x03, CLID)
				}
				Else
				{
					Store(Arg0, CLID)
				}
				Return(GNOT(0x02, Zero))
			}
			Method(GDCK, 1, NotSerialized)
			{
				Store(Arg0, CDCK)
				Return(GNOT(0x04, Zero))
			}
			Method(PARD, 0, NotSerialized)
			{
				If(LNot(ARDY))
				{
					Sleep(ASLP)
				}
				Return(LNot(ARDY))
			}
			Method(AINT, 2, NotSerialized)
			{
				If(LNot(And(TCHE, ShiftLeft(One, Arg0))))
				{
					Return(One)
				}
				If(PARD())
				{
					Return(One)
				}
				If(LEqual(Arg0, 0x02))
				{
					If(CPFM)
					{
						And(CPFM, 0x0F, Local0)
						And(EPFM, 0x0F, Local1)
						If(LEqual(Local0, One))
						{
							If(And(Local1, 0x06))
							{
								Store(0x06, PFIT)
							}
							Else
							{
								If(And(Local1, 0x08))
								{
									Store(0x08, PFIT)
								}
								Else
								{
									Store(One, PFIT)
								}
							}
						}
						If(LEqual(Local0, 0x06))
						{
							If(And(Local1, 0x08))
							{
								Store(0x08, PFIT)
							}
							Else
							{
								If(And(Local1, One))
								{
									Store(One, PFIT)
								}
								Else
								{
									Store(0x06, PFIT)
								}
							}
						}
						If(LEqual(Local0, 0x08))
						{
							If(And(Local1, One))
							{
								Store(One, PFIT)
							}
							Else
							{
								If(And(Local1, 0x06))
								{
									Store(0x06, PFIT)
								}
								Else
								{
									Store(0x08, PFIT)
								}
							}
						}
					}
					Else
					{
						Xor(PFIT, 0x07, PFIT)
					}
					Or(PFIT, 0x80000000, PFIT)
					Store(0x04, ASLC)
				}
				Else
				{
					If(LEqual(Arg0, One))
					{
						And(BCLP, 0xFFFF0000, BCLP)
						If(LEqual(And(BCLP, 0x30000000), 0x30000000))
						{
							Or(Multiply(Arg1, 0x64), BCLP, BCLP)
						}
						Else
						{
							If(LEqual(And(BCLP, 0x30000000), 0x20000000))
							{
								Or(Multiply(Arg1, 0x0A), BCLP, BCLP)
							}
							Else
							{
								If(LEqual(And(BCLP, 0x30000000), 0x10000000))
								{
									Or(Arg1, BCLP, BCLP)
								}
								Else
								{
									Or(Divide(Multiply(Arg1, 0xFF), 0x64, , ), BCLP, BCLP)
								}
							}
						}
						Or(BCLP, 0x80000000, BCLP)
						Store(0x02, ASLC)
					}
					Else
					{
						If(LEqual(Arg0, Zero))
						{
							Store(Arg1, ALSI)
							Store(One, ASLC)
						}
						Else
						{
							Return(One)
						}
					}
				}
				Store(One, ASLE)
				Return(Zero)
			}
			Method(SCIP, 0, NotSerialized)
			{
				If(LNotEqual(OVER, Zero))
				{
					Return(LNot(GSMI))
				}
				Return(Zero)
			}
			Device(^^MEM2)
			{
				Name(_HID, EISAID("PNP0C01"))
				Name(_UID, 0x02)
				Name(CRS, ResourceTemplate()
				{
					Memory32Fixed(ReadWrite, 0x20000000, 0x00200000)
					Memory32Fixed(ReadWrite, 0x40000000, 0x00200000)
				})
				Method(_CRS, 0, NotSerialized)
				{
					If(IGDS)
					{
						Return(CRS)
					}
				}
			}
		}
	}
	Name(BUFN, Zero)
	Name(MBUF, Buffer(0x1000){})
	OperationRegion(MDBG, SystemMemory, 0x9CF6A018, 0x00001004)
	Field(MDBG, AnyAcc, Lock, Preserve)
	{
		MDG0, 32768,
	}
	Method(DB2H, 1, Serialized)
	{
		SHOW(Arg0)
		MDGC(0x20)
	}
	Method(DW2H, 1, Serialized)
	{
		Store(Arg0, Local0)
		ShiftRight(Arg0, 0x08, Local1)
		And(Local0, 0xFF, Local0)
		And(Local1, 0xFF, Local1)
		DB2H(Local1)
		Decrement(BUFN)
		DB2H(Local0)
	}
	Method(DD2H, 1, Serialized)
	{
		Store(Arg0, Local0)
		ShiftRight(Arg0, 0x10, Local1)
		And(Local0, 0xFFFF, Local0)
		And(Local1, 0xFFFF, Local1)
		DW2H(Local1)
		Decrement(BUFN)
		DW2H(Local0)
	}
	Method(MBGS, 1, Serialized)
	{
		Store(SizeOf(Arg0), Local0)
		Name(BUFS, Buffer(Local0){})
		Store(Arg0, BUFS)
		MDGC(0x20)
		While(Local0)
		{
			MDGC(DerefOf(Index(BUFS, Subtract(SizeOf(Arg0), Local0))))
			Decrement(Local0)
		}
	}
	Method(SHOW, 1, Serialized)
	{
		MDGC(NTOC(ShiftRight(Arg0, 0x04)))
		MDGC(NTOC(Arg0))
	}
	Method(LINE, 0, Serialized)
	{
		Store(BUFN, Local0)
		And(Local0, 0x0F, Local0)
		While(Local0)
		{
			MDGC(Zero)
			Increment(Local0)
			And(Local0, 0x0F, Local0)
		}
	}
	Method(MDGC, 1, Serialized)
	{
		Store(Arg0, Index(MBUF, BUFN))
		Add(BUFN, One, BUFN)
		If(LGreater(BUFN, 0x0FFF))
		{
			And(BUFN, 0x0FFF, BUFN)
			UP_L(One)
		}
	}
	Method(UP_L, 1, Serialized)
	{
		Store(Arg0, Local2)
		ShiftLeft(Local2, 0x04, Local2)
		MOVE(Local2)
		Subtract(0x1000, Local2, Local3)
		While(Local2)
		{
			Store(Zero, Index(MBUF, Local3))
			Increment(Local3)
			Decrement(Local2)
		}
	}
	Method(MOVE, 1, Serialized)
	{
		Store(Arg0, Local4)
		Store(Zero, BUFN)
		Subtract(0x1000, Local4, Local5)
		While(Local5)
		{
			Decrement(Local5)
			Store(DerefOf(Index(MBUF, Local4)), Index(MBUF, BUFN))
			Increment(BUFN)
			Increment(Local4)
		}
	}
	Method(NTOC, 1, Serialized)
	{
		And(Arg0, 0x0F, Local0)
		If(LLess(Local0, 0x0A))
		{
			Add(Local0, 0x30, Local0)
		}
		Else
		{
			Add(Local0, 0x37, Local0)
		}
		Return(Local0)
	}
	Name(_S0, Package(4) {Zero, Zero, Zero, Zero})
	If(SS1)
	{
		Name(_S1, Package(4) {One, Zero, Zero, Zero})
	}
	If(SS3)
	{
		Name(_S3, Package(4) {0x05, Zero, Zero, Zero})
	}
	If(SS4)
	{
		Name(_S4, Package(4) {0x06, Zero, Zero, Zero})
	}
	Name(_S5, Package(4) {0x07, Zero, Zero, Zero})
}


References