github.com/google/syzkaller@v0.0.0-20240517125934-c0f1611a36d6/pkg/ifuzz/x86/pseudo.go (about)

     1  // Copyright 2017 syzkaller project authors. All rights reserved.
     2  // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  package x86
     5  
     6  import (
     7  	"math/rand"
     8  
     9  	"github.com/google/syzkaller/pkg/ifuzz/iset"
    10  )
    11  
    12  var pseudo = []*Insn{
    13  	{
    14  		Name:   "PSEUDO_RDMSR",
    15  		Mode:   1<<iset.ModeLast - 1,
    16  		Priv:   true,
    17  		Pseudo: true,
    18  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
    19  			gen := makeGen(cfg, r)
    20  			msr := msrs[r.Intn(len(msrs))]
    21  			gen.mov32(regECX, msr)
    22  			gen.byte(0x0f, 0x32) // rdmsr
    23  			return gen.text
    24  		},
    25  	},
    26  	{
    27  		Name:   "PSEUDO_WRMSR",
    28  		Mode:   1<<iset.ModeLast - 1,
    29  		Priv:   true,
    30  		Pseudo: true,
    31  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
    32  			gen := makeGen(cfg, r)
    33  			msr := msrs[r.Intn(len(msrs))]
    34  			v := iset.GenerateInt(cfg, r, 8)
    35  			gen.mov32(regECX, msr)
    36  			gen.mov32(regEAX, uint32(v>>0))
    37  			gen.mov32(regEDX, uint32(v>>32))
    38  			gen.byte(0x0f, 0x30) // wrmsr
    39  			return gen.text
    40  		},
    41  	},
    42  	{
    43  		Name:   "PSEUDO_PCI_READ",
    44  		Mode:   1<<iset.ModeLast - 1,
    45  		Priv:   true,
    46  		Pseudo: true,
    47  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
    48  			gen := makeGen(cfg, r)
    49  			addr, port, size := pciAddrPort(r)
    50  			gen.out32(0xcf8, addr)
    51  			gen.in(port, size)
    52  			return gen.text
    53  		},
    54  	},
    55  	{
    56  		Name:   "PSEUDO_PCI_WRITE",
    57  		Mode:   1<<iset.ModeLast - 1,
    58  		Priv:   true,
    59  		Pseudo: true,
    60  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
    61  			gen := makeGen(cfg, r)
    62  			addr, port, size := pciAddrPort(r)
    63  			val := iset.GenerateInt(cfg, r, 4)
    64  			gen.out32(0xcf8, addr)
    65  			gen.out(port, uint32(val), size)
    66  			return gen.text
    67  		},
    68  	},
    69  	{
    70  		Name:   "PSEUDO_PORT_READ",
    71  		Mode:   1<<iset.ModeLast - 1,
    72  		Priv:   true,
    73  		Pseudo: true,
    74  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
    75  			gen := makeGen(cfg, r)
    76  			port := ports[r.Intn(len(ports))]
    77  			gen.in(port, r.Intn(3))
    78  			return gen.text
    79  		},
    80  	},
    81  	{
    82  		Name:   "PSEUDO_PORT_WRITE",
    83  		Mode:   1<<iset.ModeLast - 1,
    84  		Priv:   true,
    85  		Pseudo: true,
    86  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
    87  			gen := makeGen(cfg, r)
    88  			port := ports[r.Intn(len(ports))]
    89  			val := iset.GenerateInt(cfg, r, 4)
    90  			gen.out(port, uint32(val), r.Intn(3))
    91  			return gen.text
    92  		},
    93  	},
    94  	{
    95  		Name:   "PSEUDO_XOR_CR",
    96  		Mode:   1<<iset.ModeLast - 1,
    97  		Priv:   true,
    98  		Pseudo: true,
    99  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   100  			gen := makeGen(cfg, r)
   101  			cr := controlRegisters[r.Intn(len(controlRegisters))]
   102  			var v uint32
   103  			if cr == 8 {
   104  				v = uint32(r.Intn(15) + 1)
   105  			} else {
   106  				bit := controlRegistersBits[cr][r.Intn(len(controlRegistersBits[cr]))]
   107  				v = 1 << bit
   108  			}
   109  			gen.readCR(cr)
   110  			gen.xor32(regEAX, v)
   111  			gen.writeCR(cr)
   112  			return gen.text
   113  		},
   114  	},
   115  	{
   116  		Name:   "PSEUDO_XOR_EFER",
   117  		Mode:   1<<iset.ModeLast - 1,
   118  		Priv:   true,
   119  		Pseudo: true,
   120  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   121  			gen := makeGen(cfg, r)
   122  			gen.mov32(regECX, eferMSR)
   123  			gen.byte(0x0f, 0x32) // rdmsr
   124  			bit := eferBits[r.Intn(len(eferBits))]
   125  			gen.xor32(regEAX, 1<<bit)
   126  			gen.byte(0x0f, 0x30) // wrmsr
   127  			return gen.text
   128  		},
   129  	},
   130  	{
   131  		Name:   "PSEUDO_SET_BREAK",
   132  		Mode:   1<<iset.ModeLast - 1,
   133  		Priv:   true,
   134  		Pseudo: true,
   135  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   136  			gen := makeGen(cfg, r)
   137  			br := uint8(r.Intn(4))
   138  			loc := uint32(r.Intn(4))
   139  			typ := uint32(r.Intn(16))
   140  			addr := iset.GenerateInt(cfg, r, 8)
   141  			if cfg.Mode == iset.ModeLong64 {
   142  				gen.mov64(regRAX, addr)
   143  			} else {
   144  				gen.mov32(regEAX, uint32(addr))
   145  			}
   146  			gen.writeDR(br)
   147  			gen.readDR(7)
   148  			gen.xor32(regEAX, loc<<(br*2)|typ<<(16+br*4))
   149  			gen.writeDR(7)
   150  			return gen.text
   151  		},
   152  	},
   153  	{
   154  		Name:   "PSEUDO_LOAD_SEG",
   155  		Mode:   1<<iset.ModeLast - 1,
   156  		Priv:   true,
   157  		Pseudo: true,
   158  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   159  			gen := makeGen(cfg, r)
   160  			sel := randSelector(r)
   161  			if cfg.Mode == iset.ModeReal16 {
   162  				sel = uint16(iset.GenerateInt(cfg, r, 8)) >> 4
   163  			}
   164  			reg := uint8(r.Intn(6))
   165  			gen.mov16(regAX, sel)
   166  			gen.byte(0x8e, 0xc0|(reg<<3)) // MOV %ax, %seg
   167  			return gen.text
   168  		},
   169  	},
   170  	{
   171  		Name:   "PSEUDO_FAR_JMP",
   172  		Mode:   1<<iset.ModeLong64 | 1<<iset.ModeProt32 | 1<<iset.ModeProt16,
   173  		Priv:   true,
   174  		Pseudo: true,
   175  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   176  			gen := makeGen(cfg, r)
   177  			sel := randSelector(r)
   178  			off := iset.GenerateInt(cfg, r, 4)
   179  			if cfg.Mode == iset.ModeLong64 {
   180  				gen.mov32toSPaddr(uint32(sel), 0)
   181  				gen.mov32toSPaddr(uint32(off), 2)
   182  				if r.Intn(2) == 0 {
   183  					gen.byte(0xff, 0x2c, 0x24) // ljmp (%rsp)
   184  				} else {
   185  					gen.byte(0xff, 0x1c, 0x24) // lcall (%rsp)
   186  				}
   187  			} else {
   188  				if r.Intn(2) == 0 {
   189  					gen.byte(0xea) // ljmp $imm16, $imm16/32
   190  				} else {
   191  					gen.byte(0x9a) // lcall $imm16, $imm16/32
   192  				}
   193  				if cfg.Mode == iset.ModeProt16 {
   194  					gen.imm16(uint16(off))
   195  				} else {
   196  					gen.imm32(uint32(off))
   197  				}
   198  				gen.imm16(sel)
   199  			}
   200  			return gen.text
   201  		},
   202  	},
   203  	{
   204  		Name:   "PSEUDO_LTR_LLDT",
   205  		Mode:   1<<iset.ModeLong64 | 1<<iset.ModeProt32 | 1<<iset.ModeProt16,
   206  		Priv:   true,
   207  		Pseudo: true,
   208  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   209  			gen := makeGen(cfg, r)
   210  			sel := randSelector(r)
   211  			gen.mov16(regAX, sel)
   212  			if r.Intn(2) == 0 {
   213  				gen.byte(0x0f, 0x00, 0xd8) // ltr %ax
   214  			} else {
   215  				gen.byte(0x0f, 0x00, 0xd0) // lldt %ax
   216  			}
   217  			return gen.text
   218  		},
   219  	},
   220  	{
   221  		Name:   "PSEUDO_LGIDT",
   222  		Mode:   1<<iset.ModeLong64 | 1<<iset.ModeProt32 | 1<<iset.ModeProt16,
   223  		Priv:   true,
   224  		Pseudo: true,
   225  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   226  			gen := makeGen(cfg, r)
   227  			limit := uint32(iset.GenerateInt(cfg, r, 2))
   228  			base := uint32(iset.GenerateInt(cfg, r, 4))
   229  			gen.mov32toSPaddr(limit, 0)
   230  			gen.mov32toSPaddr(base, 2)
   231  			gen.mov32toSPaddr(0, 6)
   232  			gen.addr32()
   233  			if r.Intn(2) == 0 {
   234  				gen.byte(0x0f, 0x01, 0x14, 0x24) // lgdt (%rsp)
   235  			} else {
   236  				gen.byte(0x0f, 0x01, 0x1c, 0x24) // lidt (%rsp)
   237  			}
   238  			return gen.text
   239  		},
   240  	},
   241  	{
   242  		Name:   "PSEUDO_HYPERCALL",
   243  		Mode:   1<<iset.ModeLong64 | 1<<iset.ModeProt32 | 1<<iset.ModeProt16,
   244  		Priv:   true,
   245  		Pseudo: true,
   246  		generator: func(cfg *iset.Config, r *rand.Rand) []byte {
   247  			gen := makeGen(cfg, r)
   248  			switch r.Intn(2) {
   249  			case 0:
   250  				gen.mov32(regEAX, 1) // KVM_HC_VAPIC_POLL_IRQ
   251  			case 1:
   252  				gen.mov32(regEAX, 5)                                   // KVM_HC_KICK_CPU
   253  				gen.mov32(regECX, uint32(iset.GenerateInt(cfg, r, 4))) // APIC ID
   254  			default:
   255  				panic("bad")
   256  			}
   257  			if r.Intn(2) == 0 {
   258  				gen.byte(0x0f, 0x01, 0xd9) // vmmcall
   259  			} else {
   260  				gen.byte(0x0f, 0x01, 0xc1) // vmcall
   261  			}
   262  			return gen.text
   263  		},
   264  	},
   265  }
   266  
   267  const (
   268  	regAL = iota
   269  	regAX
   270  	regEAX
   271  	regRAX
   272  	regCL
   273  	regCX
   274  	regECX
   275  	regRCX
   276  	regDL
   277  	regDX
   278  	regEDX
   279  	regRDX
   280  )
   281  
   282  type generator struct {
   283  	mode iset.Mode
   284  	r    *rand.Rand
   285  	text []byte
   286  }
   287  
   288  func makeGen(cfg *iset.Config, r *rand.Rand) *generator {
   289  	return &generator{
   290  		mode: cfg.Mode,
   291  		r:    r,
   292  	}
   293  }
   294  
   295  func (gen *generator) byte(v ...uint8) {
   296  	gen.text = append(gen.text, v...)
   297  }
   298  
   299  func (gen *generator) imm16(v uint16) {
   300  	gen.byte(byte(v>>0), byte(v>>8))
   301  }
   302  
   303  func (gen *generator) imm32(v uint32) {
   304  	gen.byte(byte(v>>0), byte(v>>8), byte(v>>16), byte(v>>24))
   305  }
   306  
   307  func (gen *generator) imm64(v uint64) {
   308  	gen.byte(byte(v>>0), byte(v>>8), byte(v>>16), byte(v>>24),
   309  		byte(v>>32), byte(v>>40), byte(v>>48), byte(v>>56))
   310  }
   311  
   312  func (gen *generator) operand16() {
   313  	switch gen.mode {
   314  	case iset.ModeLong64, iset.ModeProt32:
   315  		gen.byte(0x66)
   316  	case iset.ModeProt16, iset.ModeReal16:
   317  	default:
   318  		panic("bad mode")
   319  	}
   320  }
   321  
   322  func (gen *generator) operand32() {
   323  	switch gen.mode {
   324  	case iset.ModeLong64, iset.ModeProt32:
   325  	case iset.ModeProt16, iset.ModeReal16:
   326  		gen.byte(0x66)
   327  	default:
   328  		panic("bad mode")
   329  	}
   330  }
   331  
   332  func (gen *generator) addr32() {
   333  	switch gen.mode {
   334  	case iset.ModeLong64, iset.ModeProt32:
   335  	case iset.ModeProt16, iset.ModeReal16:
   336  		gen.byte(0x67)
   337  	default:
   338  		panic("bad mode")
   339  	}
   340  }
   341  
   342  func (gen *generator) mov8(reg int, v uint8) {
   343  	switch reg {
   344  	case regAL:
   345  		gen.byte(0xb0)
   346  	case regCL:
   347  		gen.byte(0xb1)
   348  	case regDL:
   349  		gen.byte(0xb2)
   350  	default:
   351  		panic("unknown register")
   352  	}
   353  	gen.byte(v)
   354  }
   355  
   356  func (gen *generator) mov16(reg int, v uint16) {
   357  	gen.operand16()
   358  	switch reg {
   359  	case regAX:
   360  		gen.byte(0xb8)
   361  	case regCX:
   362  		gen.byte(0xb9)
   363  	case regDX:
   364  		gen.byte(0xba)
   365  	default:
   366  		panic("unknown register")
   367  	}
   368  	gen.imm16(v)
   369  }
   370  
   371  func (gen *generator) mov32(reg int, v uint32) {
   372  	gen.operand32()
   373  	switch reg {
   374  	case regEAX:
   375  		gen.byte(0xb8)
   376  	case regECX:
   377  		gen.byte(0xb9)
   378  	case regEDX:
   379  		gen.byte(0xba)
   380  	default:
   381  		panic("unknown register")
   382  	}
   383  	gen.imm32(v)
   384  }
   385  
   386  func (gen *generator) mov64(reg int, v uint64) {
   387  	if gen.mode != iset.ModeLong64 {
   388  		panic("bad mode")
   389  	}
   390  	gen.byte(0x48)
   391  	switch reg {
   392  	case regRAX:
   393  		gen.byte(0xb8)
   394  	case regRCX:
   395  		gen.byte(0xb9)
   396  	case regRDX:
   397  		gen.byte(0xba)
   398  	default:
   399  		panic("unknown register")
   400  	}
   401  	gen.imm64(v)
   402  }
   403  
   404  // movl $v, off(%rsp).
   405  func (gen *generator) mov32toSPaddr(v uint32, off uint8) {
   406  	gen.addr32()
   407  	gen.operand32()
   408  	gen.byte(0xc7, 0x44, 0x24, off)
   409  	gen.imm32(v)
   410  }
   411  
   412  func (gen *generator) xor32(reg int, v uint32) {
   413  	gen.operand32()
   414  	switch reg {
   415  	case regEAX:
   416  		gen.byte(0x35)
   417  	default:
   418  		panic("unknown register")
   419  	}
   420  	gen.imm32(v)
   421  }
   422  
   423  func (gen *generator) readCR(cr uint8) {
   424  	if cr < 8 {
   425  		// MOV %crN, %eax/%rax
   426  		gen.byte(0x0f, 0x20, 0xc0|cr<<3)
   427  	} else if cr < 16 {
   428  		// MOV %crN, %eax/%rax
   429  		gen.byte(0x44, 0x0f, 0x20, 0xc0|(cr-8)<<3)
   430  	} else {
   431  		panic("bad cr")
   432  	}
   433  }
   434  
   435  func (gen *generator) writeCR(cr uint8) {
   436  	if cr < 8 {
   437  		// MOV %eax/%rax, %crN
   438  		gen.byte(0x0f, 0x22, 0xc0|cr<<3)
   439  	} else if cr < 16 {
   440  		// MOV %eax/%rax, %crN
   441  		gen.byte(0x44, 0x0f, 0x22, 0xc0|(cr-8)<<3)
   442  	} else {
   443  		panic("bad cr")
   444  	}
   445  }
   446  
   447  func (gen *generator) readDR(dr uint8) {
   448  	if dr >= 8 {
   449  		panic("bad dr")
   450  	}
   451  	// MOV %drN, %eax/%rax
   452  	gen.byte(0x0f, 0x21, 0xc0|dr<<3)
   453  }
   454  
   455  func (gen *generator) writeDR(dr uint8) {
   456  	if dr >= 8 {
   457  		panic("bad dr")
   458  	}
   459  	// MOV %eax/%rax, %drN
   460  	gen.byte(0x0f, 0x23, 0xc0|dr<<3)
   461  }
   462  
   463  func (gen *generator) in8(port uint16) {
   464  	gen.mov16(regDX, port)
   465  	gen.byte(0xec) // in %al, %dx
   466  }
   467  
   468  func (gen *generator) in16(port uint16) {
   469  	gen.mov16(regDX, port)
   470  	gen.operand16()
   471  	gen.byte(0xed) // in %ax, %dx
   472  }
   473  
   474  func (gen *generator) in32(port uint16) {
   475  	gen.mov16(regDX, port)
   476  	gen.operand32()
   477  	gen.byte(0xed) // in %eax, %dx
   478  }
   479  
   480  func (gen *generator) in(port uint16, size int) {
   481  	switch size {
   482  	case 0:
   483  		gen.in8(port)
   484  	case 1:
   485  		gen.in16(port)
   486  	case 2:
   487  		gen.in32(port)
   488  	default:
   489  		panic("bad size")
   490  	}
   491  }
   492  
   493  func (gen *generator) out8(port uint16, v uint8) {
   494  	gen.mov16(regDX, port)
   495  	gen.mov8(regAL, v)
   496  	gen.byte(0xee) // out %dx, %al
   497  }
   498  
   499  func (gen *generator) out16(port, v uint16) {
   500  	gen.mov16(regDX, port)
   501  	gen.mov16(regAX, v)
   502  	gen.operand16()
   503  	gen.byte(0xef) // out %dx, %ax
   504  }
   505  
   506  func (gen *generator) out32(port uint16, v uint32) {
   507  	gen.mov16(regDX, port)
   508  	gen.mov32(regEAX, v)
   509  	gen.operand32()
   510  	gen.byte(0xef) // out %dx, %eax
   511  }
   512  
   513  func (gen *generator) out(port uint16, v uint32, size int) {
   514  	switch size {
   515  	case 0:
   516  		gen.out8(port, uint8(v))
   517  	case 1:
   518  		gen.out16(port, uint16(v))
   519  	case 2:
   520  		gen.out32(port, v)
   521  	default:
   522  		panic("bad size")
   523  	}
   524  }
   525  
   526  func randSelector(r *rand.Rand) uint16 {
   527  	seg := uint16(r.Intn(40))
   528  	dpl := uint16(r.Intn(4))
   529  	ldt := uint16(r.Intn(2))
   530  	return seg<<3 | ldt<<2 | dpl
   531  }
   532  
   533  func pciAddrPort(r *rand.Rand) (addr uint32, port uint16, size int) {
   534  	bus := uint32(r.Intn(256))
   535  	dev := uint32(r.Intn(32))
   536  	fn := uint32(r.Intn(8))
   537  	reghi := uint32(r.Intn(16))
   538  	reglo := uint32(r.Intn(64)) << 2
   539  	port = 0xcfc
   540  	switch size = r.Intn(3); size {
   541  	case 0:
   542  		port += uint16(reglo & 3)
   543  		reglo += uint32(r.Intn(4))
   544  	case 1:
   545  		port += uint16(reglo & 2)
   546  		reglo += uint32(r.Intn(2) * 2)
   547  	case 2:
   548  	}
   549  	addr = 0x80000000 | reghi<<24 | bus<<16 | dev<<11 | fn<<8 | reglo
   550  	return
   551  }
   552  
   553  var controlRegisters = []uint8{0, 3, 4, 8}
   554  var controlRegistersBits = map[uint8][]uint8{
   555  	0: {0, 1, 2, 3, 4, 5, 16, 18, 29, 30, 31},
   556  	3: {3, 5},
   557  	4: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 16, 17, 18, 20, 21, 22},
   558  }
   559  
   560  const eferMSR = 0xC0000080
   561  
   562  var eferBits = []uint8{0, 8, 10, 11, 12, 13, 14, 15}
   563  
   564  var ports = []uint16{
   565  	0x40, 0x41, 0x42, 0x43, // PIT
   566  	0x61,                                 // speaker
   567  	0x20, 0x21, 0xa0, 0xa1, 0x4d0, 0x4d1, // 8259
   568  }
   569  
   570  // sys/kvm.txt also knows this list.
   571  var msrs = []uint32{
   572  	0x0, 0x1, 0x10, 0x11, 0x12, 0x13, 0x17, 0x1b,
   573  	0x20, 0x21, 0x28, 0x29, 0x2a, 0x2c, 0x33, 0x34,
   574  	0x3a, 0x3b, 0x40, 0x60, 0x79, 0x88, 0x89, 0x8a,
   575  	0x8b, 0x9b, 0x9e, 0xc1, 0xc2, 0xcd, 0xce, 0xe2,
   576  	0xe7, 0xe8, 0xfe, 0x116, 0x118, 0x119, 0x11a, 0x11b,
   577  	0x11e, 0x174, 0x175, 0x176, 0x179, 0x17a, 0x17b, 0x180,
   578  	0x181, 0x182, 0x183, 0x184, 0x185, 0x186, 0x187, 0x188,
   579  	0x189, 0x18a, 0x198, 0x199, 0x19a, 0x19b, 0x19c, 0x19d,
   580  	0x1a0, 0x1a2, 0x1a6, 0x1a7, 0x1aa, 0x1ad, 0x1ae, 0x1af,
   581  	0x1b0, 0x1b1, 0x1b2, 0x1c8, 0x1c9, 0x1d9, 0x1db, 0x1dc,
   582  	0x1dd, 0x1de, 0x1e0, 0x1fc, 0x200, 0x201, 0x202, 0x203,
   583  	0x204, 0x205, 0x206, 0x207, 0x208, 0x209, 0x20a, 0x20b,
   584  	0x20c, 0x20d, 0x20e, 0x20f, 0x210, 0x211, 0x212, 0x213,
   585  	0x214, 0x215, 0x216, 0x217, 0x218, 0x219, 0x21a, 0x21b,
   586  	0x21c, 0x21d, 0x21e, 0x21f, 0x220, 0x221, 0x222, 0x223,
   587  	0x224, 0x225, 0x226, 0x227, 0x228, 0x229, 0x22a, 0x22b,
   588  	0x22c, 0x22d, 0x22e, 0x22f, 0x230, 0x231, 0x232, 0x233,
   589  	0x234, 0x235, 0x236, 0x237, 0x238, 0x239, 0x23a, 0x23b,
   590  	0x23c, 0x23d, 0x23e, 0x23f, 0x240, 0x241, 0x242, 0x243,
   591  	0x244, 0x245, 0x246, 0x247, 0x248, 0x249, 0x24a, 0x24b,
   592  	0x24c, 0x24d, 0x24e, 0x24f, 0x250, 0x251, 0x252, 0x253,
   593  	0x254, 0x255, 0x256, 0x257, 0x258, 0x259, 0x25a, 0x25b,
   594  	0x25c, 0x25d, 0x25e, 0x25f, 0x260, 0x261, 0x262, 0x263,
   595  	0x264, 0x265, 0x266, 0x267, 0x268, 0x269, 0x26a, 0x26b,
   596  	0x26c, 0x26d, 0x26e, 0x26f, 0x270, 0x271, 0x272, 0x273,
   597  	0x274, 0x275, 0x276, 0x277, 0x278, 0x279, 0x27a, 0x27b,
   598  	0x27c, 0x27d, 0x27e, 0x27f, 0x280, 0x281, 0x282, 0x283,
   599  	0x284, 0x285, 0x286, 0x287, 0x288, 0x289, 0x28a, 0x28b,
   600  	0x28c, 0x28d, 0x28e, 0x28f, 0x290, 0x291, 0x292, 0x293,
   601  	0x294, 0x295, 0x296, 0x297, 0x298, 0x299, 0x29a, 0x29b,
   602  	0x29c, 0x29d, 0x29e, 0x29f, 0x2a0, 0x2a1, 0x2a2, 0x2a3,
   603  	0x2a4, 0x2a5, 0x2a6, 0x2a7, 0x2a8, 0x2a9, 0x2aa, 0x2ab,
   604  	0x2ac, 0x2ad, 0x2ae, 0x2af, 0x2b0, 0x2b1, 0x2b2, 0x2b3,
   605  	0x2b4, 0x2b5, 0x2b6, 0x2b7, 0x2b8, 0x2b9, 0x2ba, 0x2bb,
   606  	0x2bc, 0x2bd, 0x2be, 0x2bf, 0x2c0, 0x2c1, 0x2c2, 0x2c3,
   607  	0x2c4, 0x2c5, 0x2c6, 0x2c7, 0x2c8, 0x2c9, 0x2ca, 0x2cb,
   608  	0x2cc, 0x2cd, 0x2ce, 0x2cf, 0x2d0, 0x2d1, 0x2d2, 0x2d3,
   609  	0x2d4, 0x2d5, 0x2d6, 0x2d7, 0x2d8, 0x2d9, 0x2da, 0x2db,
   610  	0x2dc, 0x2dd, 0x2de, 0x2df, 0x2e0, 0x2e1, 0x2e2, 0x2e3,
   611  	0x2e4, 0x2e5, 0x2e6, 0x2e7, 0x2e8, 0x2e9, 0x2ea, 0x2eb,
   612  	0x2ec, 0x2ed, 0x2ee, 0x2ef, 0x2f0, 0x2f1, 0x2f2, 0x2f3,
   613  	0x2f4, 0x2f5, 0x2f6, 0x2f7, 0x2f8, 0x2f9, 0x2fa, 0x2fb,
   614  	0x2fc, 0x2fd, 0x2fe, 0x2ff, 0x300, 0x301, 0x302, 0x303,
   615  	0x304, 0x305, 0x306, 0x307, 0x308, 0x309, 0x30a, 0x30b,
   616  	0x30c, 0x30d, 0x30e, 0x30f, 0x310, 0x311, 0x312, 0x313,
   617  	0x314, 0x315, 0x316, 0x317, 0x318, 0x319, 0x31a, 0x31b,
   618  	0x31c, 0x31d, 0x31e, 0x31f, 0x320, 0x321, 0x322, 0x323,
   619  	0x324, 0x325, 0x326, 0x327, 0x328, 0x329, 0x32a, 0x32b,
   620  	0x32c, 0x32d, 0x32e, 0x32f, 0x330, 0x331, 0x332, 0x333,
   621  	0x334, 0x335, 0x336, 0x337, 0x338, 0x339, 0x33a, 0x33b,
   622  	0x33c, 0x33d, 0x33e, 0x33f, 0x340, 0x341, 0x342, 0x343,
   623  	0x344, 0x345, 0x346, 0x347, 0x348, 0x349, 0x34a, 0x34b,
   624  	0x34c, 0x34d, 0x34e, 0x34f, 0x350, 0x351, 0x352, 0x353,
   625  	0x354, 0x355, 0x356, 0x357, 0x358, 0x359, 0x35a, 0x35b,
   626  	0x35c, 0x35d, 0x35e, 0x35f, 0x360, 0x361, 0x362, 0x363,
   627  	0x364, 0x365, 0x366, 0x367, 0x368, 0x369, 0x36a, 0x36b,
   628  	0x36c, 0x36d, 0x36e, 0x36f, 0x370, 0x371, 0x372, 0x373,
   629  	0x374, 0x375, 0x376, 0x377, 0x378, 0x379, 0x37a, 0x37b,
   630  	0x37c, 0x37d, 0x37e, 0x37f, 0x380, 0x381, 0x382, 0x383,
   631  	0x384, 0x385, 0x386, 0x387, 0x388, 0x389, 0x38a, 0x38b,
   632  	0x38c, 0x38d, 0x38e, 0x38f, 0x390, 0x391, 0x392, 0x393,
   633  	0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b,
   634  	0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a2, 0x3a3,
   635  	0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab,
   636  	0x3ac, 0x3ad, 0x3ae, 0x3af, 0x3b0, 0x3b1, 0x3b2, 0x3b3,
   637  	0x3b4, 0x3b5, 0x3b6, 0x3b7, 0x3b8, 0x3b9, 0x3ba, 0x3bb,
   638  	0x3bc, 0x3bd, 0x3be, 0x3bf, 0x3c2, 0x3c3, 0x3c4, 0x3c5,
   639  	0x3f1, 0x3f2, 0x3f6, 0x3f7, 0x3f8, 0x3f9, 0x3fa, 0x3fc,
   640  	0x3fd, 0x3fe, 0x3ff, 0x400, 0x401, 0x402, 0x403, 0x404,
   641  	0x405, 0x406, 0x407, 0x408, 0x409, 0x40a, 0x40b, 0x40c,
   642  	0x40d, 0x40e, 0x40f, 0x410, 0x411, 0x412, 0x413, 0x480,
   643  	0x481, 0x482, 0x483, 0x484, 0x485, 0x486, 0x487, 0x488,
   644  	0x489, 0x48a, 0x48b, 0x48c, 0x48d, 0x48e, 0x48f, 0x490,
   645  	0x491, 0x4c1, 0x4d0, 0x560, 0x561, 0x570, 0x571, 0x572,
   646  	0x580, 0x581, 0x582, 0x583, 0x584, 0x585, 0x586, 0x587,
   647  	0x600, 0x606, 0x60a, 0x60b, 0x60c, 0x60d, 0x610, 0x611,
   648  	0x613, 0x614, 0x618, 0x619, 0x61b, 0x61c, 0x630, 0x631,
   649  	0x632, 0x633, 0x634, 0x635, 0x638, 0x639, 0x63a, 0x63b,
   650  	0x640, 0x641, 0x642, 0x648, 0x649, 0x64a, 0x64b, 0x64c,
   651  	0x64d, 0x64e, 0x64f, 0x658, 0x659, 0x65a, 0x65b, 0x660,
   652  	0x668, 0x669, 0x680, 0x690, 0x6b0, 0x6b1, 0x6c0, 0x6e0,
   653  	0x770, 0x771, 0x772, 0x773, 0x774, 0x777, 0x800, 0x801,
   654  	0x802, 0x803, 0x804, 0x805, 0x806, 0x807, 0x808, 0x809,
   655  	0x80a, 0x80b, 0x80c, 0x80d, 0x80e, 0x80f, 0x810, 0x811,
   656  	0x812, 0x813, 0x814, 0x815, 0x816, 0x817, 0x818, 0x819,
   657  	0x81a, 0x81b, 0x81c, 0x81d, 0x81e, 0x81f, 0x820, 0x821,
   658  	0x822, 0x823, 0x824, 0x825, 0x826, 0x827, 0x828, 0x829,
   659  	0x82a, 0x82b, 0x82c, 0x82d, 0x82e, 0x82f, 0x830, 0x831,
   660  	0x832, 0x833, 0x834, 0x835, 0x836, 0x837, 0x838, 0x839,
   661  	0x83a, 0x83b, 0x83c, 0x83d, 0x83e, 0x83f, 0x840, 0x841,
   662  	0x842, 0x843, 0x844, 0x845, 0x846, 0x847, 0x848, 0x849,
   663  	0x84a, 0x84b, 0x84c, 0x84d, 0x84e, 0x84f, 0x850, 0x851,
   664  	0x852, 0x853, 0x854, 0x855, 0x856, 0x857, 0x858, 0x859,
   665  	0x85a, 0x85b, 0x85c, 0x85d, 0x85e, 0x85f, 0x860, 0x861,
   666  	0x862, 0x863, 0x864, 0x865, 0x866, 0x867, 0x868, 0x869,
   667  	0x86a, 0x86b, 0x86c, 0x86d, 0x86e, 0x86f, 0x870, 0x871,
   668  	0x872, 0x873, 0x874, 0x875, 0x876, 0x877, 0x878, 0x879,
   669  	0x87a, 0x87b, 0x87c, 0x87d, 0x87e, 0x87f, 0x880, 0x881,
   670  	0x882, 0x883, 0x884, 0x885, 0x886, 0x887, 0x888, 0x889,
   671  	0x88a, 0x88b, 0x88c, 0x88d, 0x88e, 0x88f, 0x890, 0x891,
   672  	0x892, 0x893, 0x894, 0x895, 0x896, 0x897, 0x898, 0x899,
   673  	0x89a, 0x89b, 0x89c, 0x89d, 0x89e, 0x89f, 0x8a0, 0x8a1,
   674  	0x8a2, 0x8a3, 0x8a4, 0x8a5, 0x8a6, 0x8a7, 0x8a8, 0x8a9,
   675  	0x8aa, 0x8ab, 0x8ac, 0x8ad, 0x8ae, 0x8af, 0x8b0, 0x8b1,
   676  	0x8b2, 0x8b3, 0x8b4, 0x8b5, 0x8b6, 0x8b7, 0x8b8, 0x8b9,
   677  	0x8ba, 0x8bb, 0x8bc, 0x8bd, 0x8be, 0x8bf, 0x8c0, 0x8c1,
   678  	0x8c2, 0x8c3, 0x8c4, 0x8c5, 0x8c6, 0x8c7, 0x8c8, 0x8c9,
   679  	0x8ca, 0x8cb, 0x8cc, 0x8cd, 0x8ce, 0x8cf, 0x8d0, 0x8d1,
   680  	0x8d2, 0x8d3, 0x8d4, 0x8d5, 0x8d6, 0x8d7, 0x8d8, 0x8d9,
   681  	0x8da, 0x8db, 0x8dc, 0x8dd, 0x8de, 0x8df, 0x8e0, 0x8e1,
   682  	0x8e2, 0x8e3, 0x8e4, 0x8e5, 0x8e6, 0x8e7, 0x8e8, 0x8e9,
   683  	0x8ea, 0x8eb, 0x8ec, 0x8ed, 0x8ee, 0x8ef, 0x8f0, 0x8f1,
   684  	0x8f2, 0x8f3, 0x8f4, 0x8f5, 0x8f6, 0x8f7, 0x8f8, 0x8f9,
   685  	0x8fa, 0x8fb, 0x8fc, 0x8fd, 0x8fe, 0x8ff, 0x900, 0x901,
   686  	0x902, 0x903, 0x904, 0x905, 0x906, 0x907, 0x908, 0x909,
   687  	0x90a, 0x90b, 0x90c, 0x90d, 0x90e, 0x90f, 0x910, 0x911,
   688  	0x912, 0x913, 0x914, 0x915, 0x916, 0x917, 0x918, 0x919,
   689  	0x91a, 0x91b, 0x91c, 0x91d, 0x91e, 0x91f, 0x920, 0x921,
   690  	0x922, 0x923, 0x924, 0x925, 0x926, 0x927, 0x928, 0x929,
   691  	0x92a, 0x92b, 0x92c, 0x92d, 0x92e, 0x92f, 0x930, 0x931,
   692  	0x932, 0x933, 0x934, 0x935, 0x936, 0x937, 0x938, 0x939,
   693  	0x93a, 0x93b, 0x93c, 0x93d, 0x93e, 0x93f, 0x940, 0x941,
   694  	0x942, 0x943, 0x944, 0x945, 0x946, 0x947, 0x948, 0x949,
   695  	0x94a, 0x94b, 0x94c, 0x94d, 0x94e, 0x94f, 0x950, 0x951,
   696  	0x952, 0x953, 0x954, 0x955, 0x956, 0x957, 0x958, 0x959,
   697  	0x95a, 0x95b, 0x95c, 0x95d, 0x95e, 0x95f, 0x960, 0x961,
   698  	0x962, 0x963, 0x964, 0x965, 0x966, 0x967, 0x968, 0x969,
   699  	0x96a, 0x96b, 0x96c, 0x96d, 0x96e, 0x96f, 0x970, 0x971,
   700  	0x972, 0x973, 0x974, 0x975, 0x976, 0x977, 0x978, 0x979,
   701  	0x97a, 0x97b, 0x97c, 0x97d, 0x97e, 0x97f, 0x980, 0x981,
   702  	0x982, 0x983, 0x984, 0x985, 0x986, 0x987, 0x988, 0x989,
   703  	0x98a, 0x98b, 0x98c, 0x98d, 0x98e, 0x98f, 0x990, 0x991,
   704  	0x992, 0x993, 0x994, 0x995, 0x996, 0x997, 0x998, 0x999,
   705  	0x99a, 0x99b, 0x99c, 0x99d, 0x99e, 0x99f, 0x9a0, 0x9a1,
   706  	0x9a2, 0x9a3, 0x9a4, 0x9a5, 0x9a6, 0x9a7, 0x9a8, 0x9a9,
   707  	0x9aa, 0x9ab, 0x9ac, 0x9ad, 0x9ae, 0x9af, 0x9b0, 0x9b1,
   708  	0x9b2, 0x9b3, 0x9b4, 0x9b5, 0x9b6, 0x9b7, 0x9b8, 0x9b9,
   709  	0x9ba, 0x9bb, 0x9bc, 0x9bd, 0x9be, 0x9bf, 0x9c0, 0x9c1,
   710  	0x9c2, 0x9c3, 0x9c4, 0x9c5, 0x9c6, 0x9c7, 0x9c8, 0x9c9,
   711  	0x9ca, 0x9cb, 0x9cc, 0x9cd, 0x9ce, 0x9cf, 0x9d0, 0x9d1,
   712  	0x9d2, 0x9d3, 0x9d4, 0x9d5, 0x9d6, 0x9d7, 0x9d8, 0x9d9,
   713  	0x9da, 0x9db, 0x9dc, 0x9dd, 0x9de, 0x9df, 0x9e0, 0x9e1,
   714  	0x9e2, 0x9e3, 0x9e4, 0x9e5, 0x9e6, 0x9e7, 0x9e8, 0x9e9,
   715  	0x9ea, 0x9eb, 0x9ec, 0x9ed, 0x9ee, 0x9ef, 0x9f0, 0x9f1,
   716  	0x9f2, 0x9f3, 0x9f4, 0x9f5, 0x9f6, 0x9f7, 0x9f8, 0x9f9,
   717  	0x9fa, 0x9fb, 0x9fc, 0x9fd, 0x9fe, 0x9ff, 0xa00, 0xa01,
   718  	0xa02, 0xa03, 0xa04, 0xa05, 0xa06, 0xa07, 0xa08, 0xa09,
   719  	0xa0a, 0xa0b, 0xa0c, 0xa0d, 0xa0e, 0xa0f, 0xa10, 0xa11,
   720  	0xa12, 0xa13, 0xa14, 0xa15, 0xa16, 0xa17, 0xa18, 0xa19,
   721  	0xa1a, 0xa1b, 0xa1c, 0xa1d, 0xa1e, 0xa1f, 0xa20, 0xa21,
   722  	0xa22, 0xa23, 0xa24, 0xa25, 0xa26, 0xa27, 0xa28, 0xa29,
   723  	0xa2a, 0xa2b, 0xa2c, 0xa2d, 0xa2e, 0xa2f, 0xa30, 0xa31,
   724  	0xa32, 0xa33, 0xa34, 0xa35, 0xa36, 0xa37, 0xa38, 0xa39,
   725  	0xa3a, 0xa3b, 0xa3c, 0xa3d, 0xa3e, 0xa3f, 0xa40, 0xa41,
   726  	0xa42, 0xa43, 0xa44, 0xa45, 0xa46, 0xa47, 0xa48, 0xa49,
   727  	0xa4a, 0xa4b, 0xa4c, 0xa4d, 0xa4e, 0xa4f, 0xa50, 0xa51,
   728  	0xa52, 0xa53, 0xa54, 0xa55, 0xa56, 0xa57, 0xa58, 0xa59,
   729  	0xa5a, 0xa5b, 0xa5c, 0xa5d, 0xa5e, 0xa5f, 0xa60, 0xa61,
   730  	0xa62, 0xa63, 0xa64, 0xa65, 0xa66, 0xa67, 0xa68, 0xa69,
   731  	0xa6a, 0xa6b, 0xa6c, 0xa6d, 0xa6e, 0xa6f, 0xa70, 0xa71,
   732  	0xa72, 0xa73, 0xa74, 0xa75, 0xa76, 0xa77, 0xa78, 0xa79,
   733  	0xa7a, 0xa7b, 0xa7c, 0xa7d, 0xa7e, 0xa7f, 0xa80, 0xa81,
   734  	0xa82, 0xa83, 0xa84, 0xa85, 0xa86, 0xa87, 0xa88, 0xa89,
   735  	0xa8a, 0xa8b, 0xa8c, 0xa8d, 0xa8e, 0xa8f, 0xa90, 0xa91,
   736  	0xa92, 0xa93, 0xa94, 0xa95, 0xa96, 0xa97, 0xa98, 0xa99,
   737  	0xa9a, 0xa9b, 0xa9c, 0xa9d, 0xa9e, 0xa9f, 0xaa0, 0xaa1,
   738  	0xaa2, 0xaa3, 0xaa4, 0xaa5, 0xaa6, 0xaa7, 0xaa8, 0xaa9,
   739  	0xaaa, 0xaab, 0xaac, 0xaad, 0xaae, 0xaaf, 0xab0, 0xab1,
   740  	0xab2, 0xab3, 0xab4, 0xab5, 0xab6, 0xab7, 0xab8, 0xab9,
   741  	0xaba, 0xabb, 0xabc, 0xabd, 0xabe, 0xabf, 0xac0, 0xac1,
   742  	0xac2, 0xac3, 0xac4, 0xac5, 0xac6, 0xac7, 0xac8, 0xac9,
   743  	0xaca, 0xacb, 0xacc, 0xacd, 0xace, 0xacf, 0xad0, 0xad1,
   744  	0xad2, 0xad3, 0xad4, 0xad5, 0xad6, 0xad7, 0xad8, 0xad9,
   745  	0xada, 0xadb, 0xadc, 0xadd, 0xade, 0xadf, 0xae0, 0xae1,
   746  	0xae2, 0xae3, 0xae4, 0xae5, 0xae6, 0xae7, 0xae8, 0xae9,
   747  	0xaea, 0xaeb, 0xaec, 0xaed, 0xaee, 0xaef, 0xaf0, 0xaf1,
   748  	0xaf2, 0xaf3, 0xaf4, 0xaf5, 0xaf6, 0xaf7, 0xaf8, 0xaf9,
   749  	0xafa, 0xafb, 0xafc, 0xafd, 0xafe, 0xaff, 0xb00, 0xb01,
   750  	0xb02, 0xb03, 0xb04, 0xb05, 0xb06, 0xb07, 0xb08, 0xb09,
   751  	0xb0a, 0xb0b, 0xb0c, 0xb0d, 0xb0e, 0xb0f, 0xb10, 0xb11,
   752  	0xb12, 0xb13, 0xb14, 0xb15, 0xb16, 0xb17, 0xb18, 0xb19,
   753  	0xb1a, 0xb1b, 0xb1c, 0xb1d, 0xb1e, 0xb1f, 0xb20, 0xb21,
   754  	0xb22, 0xb23, 0xb24, 0xb25, 0xb26, 0xb27, 0xb28, 0xb29,
   755  	0xb2a, 0xb2b, 0xb2c, 0xb2d, 0xb2e, 0xb2f, 0xb30, 0xb31,
   756  	0xb32, 0xb33, 0xb34, 0xb35, 0xb36, 0xb37, 0xb38, 0xb39,
   757  	0xb3a, 0xb3b, 0xb3c, 0xb3d, 0xb3e, 0xb3f, 0xb40, 0xb41,
   758  	0xb42, 0xb43, 0xb44, 0xb45, 0xb46, 0xb47, 0xb48, 0xb49,
   759  	0xb4a, 0xb4b, 0xb4c, 0xb4d, 0xb4e, 0xb4f, 0xb50, 0xb51,
   760  	0xb52, 0xb53, 0xb54, 0xb55, 0xb56, 0xb57, 0xb58, 0xb59,
   761  	0xb5a, 0xb5b, 0xb5c, 0xb5d, 0xb5e, 0xb5f, 0xb60, 0xb61,
   762  	0xb62, 0xb63, 0xb64, 0xb65, 0xb66, 0xb67, 0xb68, 0xb69,
   763  	0xb6a, 0xb6b, 0xb6c, 0xb6d, 0xb6e, 0xb6f, 0xb70, 0xb71,
   764  	0xb72, 0xb73, 0xb74, 0xb75, 0xb76, 0xb77, 0xb78, 0xb79,
   765  	0xb7a, 0xb7b, 0xb7c, 0xb7d, 0xb7e, 0xb7f, 0xb80, 0xb81,
   766  	0xb82, 0xb83, 0xb84, 0xb85, 0xb86, 0xb87, 0xb88, 0xb89,
   767  	0xb8a, 0xb8b, 0xb8c, 0xb8d, 0xb8e, 0xb8f, 0xb90, 0xb91,
   768  	0xb92, 0xb93, 0xb94, 0xb95, 0xb96, 0xb97, 0xb98, 0xb99,
   769  	0xb9a, 0xb9b, 0xb9c, 0xb9d, 0xb9e, 0xb9f, 0xba0, 0xba1,
   770  	0xba2, 0xba3, 0xba4, 0xba5, 0xba6, 0xba7, 0xba8, 0xba9,
   771  	0xbaa, 0xbab, 0xbac, 0xbad, 0xbae, 0xbaf, 0xbb0, 0xbb1,
   772  	0xbb2, 0xbb3, 0xbb4, 0xbb5, 0xbb6, 0xbb7, 0xbb8, 0xbb9,
   773  	0xbba, 0xbbb, 0xbbc, 0xbbd, 0xbbe, 0xbbf, 0xbc0, 0xbc1,
   774  	0xbc2, 0xbc3, 0xbc4, 0xbc5, 0xbc6, 0xbc7, 0xbc8, 0xbc9,
   775  	0xbca, 0xbcb, 0xbcc, 0xbcd, 0xbce, 0xbcf, 0xbd0, 0xbd1,
   776  	0xbd2, 0xbd3, 0xbd4, 0xbd5, 0xbd6, 0xbd7, 0xbd8, 0xbd9,
   777  	0xbda, 0xbdb, 0xbdc, 0xbdd, 0xbde, 0xbdf, 0xbe0, 0xbe1,
   778  	0xbe2, 0xbe3, 0xbe4, 0xbe5, 0xbe6, 0xbe7, 0xbe8, 0xbe9,
   779  	0xbea, 0xbeb, 0xbec, 0xbed, 0xbee, 0xbef, 0xbf0, 0xbf1,
   780  	0xbf2, 0xbf3, 0xbf4, 0xbf5, 0xbf6, 0xbf7, 0xbf8, 0xbf9,
   781  	0xbfa, 0xbfb, 0xbfc, 0xbfd, 0xbfe, 0xbff, 0xd90, 0xda0,
   782  	0xdc0, 0xdc1, 0xdc2, 0xdc3, 0xdc4, 0xdc5, 0xdc6, 0xdc7,
   783  	0x40000000, 0x40000001, 0x40000002, 0x40000003, 0x40000010, 0x40000020, 0x40000022, 0x40000023,
   784  	0x40000070, 0x40000071, 0x40000072, 0x40000073, 0x40000080, 0x40000081, 0x40000082, 0x40000083,
   785  	0x40000084, 0x40000090, 0x40000091, 0x40000092, 0x40000093, 0x40000094, 0x40000095, 0x40000096,
   786  	0x40000097, 0x40000098, 0x40000099, 0x4000009a, 0x4000009b, 0x4000009c, 0x4000009d, 0x4000009e,
   787  	0x4000009f, 0x400000b0, 0x400000b1, 0x400000b2, 0x400000b3, 0x400000b4, 0x400000b5, 0x400000b6,
   788  	0x400000b7, 0x40000100, 0x40000101, 0x40000102, 0x40000103, 0x40000104, 0x40000105, 0x4b564d00,
   789  	0x4b564d01, 0x4b564d02, 0x4b564d03, 0x4b564d04, 0xc0000080, 0xc0000081, 0xc0000082, 0xc0000083,
   790  	0xc0000084, 0xc0000100, 0xc0000101, 0xc0000102, 0xc0000103, 0xc0000104, 0xc001001f, 0xc0010020,
   791  	0xc0010044, 0xc0010062, 0xc0010063, 0xc0010064, 0xc0010114, 0xc0010115, 0xc0010117, 0xc0010140,
   792  	0xc0010141, 0xc0011020, 0xc0011022, 0xc001102a, 0xc0011030, 0xc0011031, 0xc0011032, 0xc0011033,
   793  	0xc0011034, 0xc0011035, 0xc0011036, 0xc0011037, 0xc0011038, 0xc0011039, 0xc001103a, 0xc001103b,
   794  	0xc001103d,
   795  }