From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2181 invoked by alias); 13 Dec 2009 04:28:21 -0000 Received: (qmail 32004 invoked by uid 22791); 13 Dec 2009 04:28:11 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-iw0-f203.google.com (HELO mail-iw0-f203.google.com) (209.85.223.203) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Sun, 13 Dec 2009 04:28:03 +0000 Received: by iwn41 with SMTP id 41so1229165iwn.12 for ; Sat, 12 Dec 2009 20:28:01 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.148.78 with SMTP id o14mr946261ibv.56.1260637211719; Sat, 12 Dec 2009 09:00:11 -0800 (PST) In-Reply-To: References: <4B215151.6040608@vmware.com> From: Hui Zhu Date: Sun, 13 Dec 2009 04:28:00 -0000 Message-ID: Subject: Re: [RFA] Prec x86 MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 support To: Michael Snyder Cc: gdb-patches ml , Mark Kettenis Content-Type: multipart/mixed; boundary=001485ea8b4c31fa01047a8af940 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-12/txt/msg00178.txt.bz2 --001485ea8b4c31fa01047a8af940 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 33432 Hi, This the update sse patch that follow cvs-head update. And about the testcase, the sse patch fix a lot of fail because some code in testcase use sse insn. Now, I just got fail in solib-precsave.exp sigall-reverse.exp sigall-precsave.exp. solib-precsave.exp, this fail is because the core solib error that I report in before. sigall-reverse.exp sigall-precsave.exp sigall-reverse.exp sigall-precsave.exp is because some behavior error. I need check x86 and amd64's different. And try fix it in yesterday. Thanks, Hui 2009-12-13 Hui Zhu * i386-tdep.c (OT_DQUAD): New enum. (i386_process_record): Add code for MMX, 3DNow!, SSE, SSE2, SSE3, SSSE3 and SSE4. --- i386-tdep.c | 1216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1200 insertions(+), 16 deletions(-) --- a/i386-tdep.c +++ b/i386-tdep.c @@ -2848,6 +2848,7 @@ enum OT_WORD, OT_LONG, OT_QUAD, + OT_DQUAD, }; /* i386 arith/logic operations */ @@ -3295,7 +3296,7 @@ i386_process_record (struct gdbarch *gdb ir.dflag = 1; ir.override = -1; ir.popl_esp_hack = 0; - ir.regmap = gdbarch_tdep (gdbarch)->record_regmap; + ir.regmap = tdep->record_regmap; ir.gdbarch = gdbarch; if (record_debug > 1) @@ -3413,7 +3414,7 @@ i386_process_record (struct gdbarch *gdb return -1; } ir.addr++; - opcode = (uint16_t) tmpu8 | 0x0f00; + opcode = (uint32_t) tmpu8 | 0x0f00; goto reswitch; break; @@ -5217,7 +5218,7 @@ i386_process_record (struct gdbarch *gdb } ir.addr++; if (tmpu8 != 0x80 - || gdbarch_tdep (gdbarch)->i386_intx80_record == NULL) + || tdep->i386_intx80_record == NULL) { printf_unfiltered (_("Process record doesn't support " "instruction int 0x%02x.\n"), @@ -5225,7 +5226,7 @@ i386_process_record (struct gdbarch *gdb ir.addr -= 2; goto no_support; } - ret = gdbarch_tdep (gdbarch)->i386_intx80_record (ir.regcache); + ret = tdep->i386_intx80_record (ir.regcache); if (ret) return ret; } @@ -5322,14 +5323,14 @@ i386_process_record (struct gdbarch *gdb ir.addr -= 2; goto no_support; } - if (gdbarch_tdep (gdbarch)->i386_sysenter_record == NULL) + if (tdep->i386_sysenter_record == NULL) { printf_unfiltered (_("Process record doesn't support " "instruction sysenter.\n")); ir.addr -= 2; goto no_support; } - ret = gdbarch_tdep (gdbarch)->i386_sysenter_record (ir.regcache); + ret = tdep->i386_sysenter_record (ir.regcache); if (ret) return ret; } @@ -5347,14 +5348,14 @@ i386_process_record (struct gdbarch *gdb case 0x0f05: { int ret; - if (gdbarch_tdep (gdbarch)->i386_syscall_record == NULL) + if (tdep->i386_syscall_record == NULL) { printf_unfiltered (_("Process record doesn't support " "instruction syscall.\n")); ir.addr -= 2; goto no_support; } - ret = gdbarch_tdep (gdbarch)->i386_syscall_record (ir.regcache); + ret = tdep->i386_syscall_record (ir.regcache); if (ret) return ret; } @@ -5698,14 +5699,1196 @@ i386_process_record (struct gdbarch *gdb I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* MMX/SSE/SSE2/PNI support */ - /* XXX */ + /* MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 */ + /* 3DNow! prefetch */ + case 0x0f0d: + break; + + /* 3DNow! femms */ + case 0x0f0e: + /* emms */ + case 0x0f77: + if (i386_fpc_regnum_p (gdbarch, I387_FTAG_REGNUM(tdep))) + goto no_support; + record_arch_list_add_reg (ir.regcache, I387_FTAG_REGNUM(tdep)); + break; + + /* 3DNow! data */ + case 0x0f0f: + if (i386_record_modrm (&ir)) + return -1; + if (target_read_memory (ir.addr, &tmpu8, 1)) + { + if (record_debug) + printf_unfiltered (_("Process record: error reading memory at " + "addr %s len = 1.\n"), + paddress (gdbarch, ir.addr)); + return -1; + } + ir.addr++; + switch (tmpu8) + { + /* 3DNow! pi2fw */ + case 0x0c: + /* 3DNow! pi2fd */ + case 0x0d: + /* 3DNow! pf2iw */ + case 0x1c: + /* 3DNow! pf2id */ + case 0x1d: + /* 3DNow! pfnacc */ + case 0x8a: + /* 3DNow! pfpnacc */ + case 0x8e: + /* 3DNow! pfcmpge */ + case 0x90: + /* 3DNow! pfmin */ + case 0x94: + /* 3DNow! pfrcp */ + case 0x96: + /* 3DNow! pfrsqrt */ + case 0x97: + /* 3DNow! pfsub */ + case 0x9a: + /* 3DNow! pfadd */ + case 0x9e: + /* 3DNow! pfcmpgt */ + case 0xa0: + /* 3DNow! pfmax */ + case 0xa4: + /* 3DNow! pfrcpit1 */ + case 0xa6: + /* 3DNow! pfrsqit1 */ + case 0xa7: + /* 3DNow! pfsubr */ + case 0xaa: + /* 3DNow! pfacc */ + case 0xae: + /* 3DNow! pfcmpeq */ + case 0xb0: + /* 3DNow! pfmul */ + case 0xb4: + /* 3DNow! pfrcpit2 */ + case 0xb6: + /* 3DNow! pmulhrw */ + case 0xb7: + /* 3DNow! pswapd */ + case 0xbb: + /* 3DNow! pavgusb */ + case 0xbf: + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) + goto no_support_3dnow_data; + record_arch_list_add_reg (ir.regcache, ir.reg); + break; + + default: +no_support_3dnow_data: + opcode = (opcode << 8) | tmpu8; + goto no_support; + break; + } + break; + + /* rsm */ + case 0x0faa: + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBP_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); + break; + + case 0x0fae: + if (i386_record_modrm (&ir)) + return -1; + switch(ir.reg) + { + /* fxsave */ + case 0: + { + uint64_t tmpu64; + + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + if (i386_record_lea_modrm_addr (&ir, &tmpu64)) + return -1; + if (record_arch_list_add_mem (tmpu64, 512)) + return -1; + } + break; + + /* fxrstor */ + case 1: + { + int i; + + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + + for (i = I387_MM0_REGNUM (tdep); + i386_mmx_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + + for (i = I387_XMM0_REGNUM (tdep); + i386_sse_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + + if (i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) + record_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep)); + + for (i = I387_ST0_REGNUM (tdep); + i386_fp_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + + for (i = I387_FCTRL_REGNUM (tdep); + i386_fpc_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + } + break; + + /* ldmxcsr */ + case 2: + if (!i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) + goto no_support; + record_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep)); + break; + + /* stmxcsr */ + case 3: + ir.ot = OT_LONG; + if (i386_record_lea_modrm (&ir)) + return -1; + break; + + /* lfence */ + case 5: + /* mfence */ + case 6: + /* sfence clflush */ + case 7: + break; + + default: + opcode = (opcode << 8) | ir.modrm; + goto no_support; + break; + } + break; + + /* movnti */ + case 0x0fc3: + ir.ot = (ir.dflag == 2) ? OT_QUAD : OT_LONG; + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + goto no_support; + ir.reg |= rex_r; + if (i386_record_lea_modrm (&ir)) + return -1; + break; + + /* Add prefix to opcode. */ + case 0x0f10: + case 0x0f11: + case 0x0f12: + case 0x0f13: + case 0x0f14: + case 0x0f16: + case 0x0f17: + case 0x0f28: + case 0x0f29: + case 0x0f2a: + case 0x0f2b: + case 0x0f2c: + case 0x0f2d: + case 0x0f2e: + case 0x0f2f: + case 0x0f38: + case 0x0f39: + case 0x0f3a: + case 0x0f50: + case 0x0f51: + case 0x0f52: + case 0x0f53: + case 0x0f54: + case 0x0f55: + case 0x0f56: + case 0x0f57: + case 0x0f58: + case 0x0f59: + case 0x0f5a: + case 0x0f5b: + case 0x0f5c: + case 0x0f5d: + case 0x0f5e: + case 0x0f5f: + case 0x0f60: + case 0x0f61: + case 0x0f62: + case 0x0f63: + case 0x0f64: + case 0x0f65: + case 0x0f66: + case 0x0f67: + case 0x0f68: + case 0x0f69: + case 0x0f6a: + case 0x0f6b: + case 0x0f6c: + case 0x0f6d: + case 0x0f6e: + case 0x0f6f: + case 0x0f70: + case 0x0f71: + case 0x0f72: + case 0x0f73: + case 0x0f74: + case 0x0f75: + case 0x0f76: + case 0x0f7c: + case 0x0f7d: + case 0x0f7e: + case 0x0f7f: + case 0x0fb8: + case 0x0fc2: + case 0x0fc4: + case 0x0fc5: + case 0x0fc6: + case 0x0fd0: + case 0x0fd1: + case 0x0fd2: + case 0x0fd3: + case 0x0fd4: + case 0x0fd5: + case 0x0fd6: + case 0x0fd7: + case 0x0fd8: + case 0x0fd9: + case 0x0fda: + case 0x0fdb: + case 0x0fdc: + case 0x0fdd: + case 0x0fde: + case 0x0fdf: + case 0x0fe0: + case 0x0fe1: + case 0x0fe2: + case 0x0fe3: + case 0x0fe4: + case 0x0fe5: + case 0x0fe6: + case 0x0fe7: + case 0x0fe8: + case 0x0fe9: + case 0x0fea: + case 0x0feb: + case 0x0fec: + case 0x0fed: + case 0x0fee: + case 0x0fef: + case 0x0ff0: + case 0x0ff1: + case 0x0ff2: + case 0x0ff3: + case 0x0ff4: + case 0x0ff5: + case 0x0ff6: + case 0x0ff7: + case 0x0ff8: + case 0x0ff9: + case 0x0ffa: + case 0x0ffb: + case 0x0ffc: + case 0x0ffd: + case 0x0ffe: + switch (prefixes) + { + case PREFIX_REPNZ: + opcode |= 0xf20000; + break; + case PREFIX_DATA: + opcode |= 0x660000; + break; + case PREFIX_REPZ: + opcode |= 0xf30000; + break; + } +reswitch_prefix_add: + switch (opcode) + { + case 0x0f38: + case 0x660f38: + case 0xf20f38: + case 0x0f3a: + case 0x660f3a: + if (target_read_memory (ir.addr, &tmpu8, 1)) + { + if (record_debug) + printf_unfiltered (_("Process record: error reading memory at " + "addr %s len = 1.\n"), + paddress (gdbarch, ir.addr)); + return -1; + } + ir.addr++; + opcode = (uint32_t) tmpu8 | opcode << 4; + goto reswitch_prefix_add; + break; + + /* movups */ + case 0x0f10: + /* movupd */ + case 0x660f10: + /* movss */ + case 0xf30f10: + /* movsd */ + case 0xf20f10: + /* movlps */ + case 0x0f12: + /* movlpd */ + case 0x660f12: + /* movsldup */ + case 0xf30f12: + /* movddup */ + case 0xf20f12: + /* unpcklps */ + case 0x0f14: + /* unpcklpd */ + case 0x660f14: + /* unpckhps */ + case 0x0f15: + /* unpckhpd */ + case 0x660f15: + /* movhps */ + case 0x0f16: + /* movhpd */ + case 0x660f16: + /* movshdup */ + case 0xf30f16: + /* movaps */ + case 0x0f28: + /* movapd */ + case 0x660f28: + /* cvtpi2ps */ + case 0x0f2a: + /* cvtpi2pd */ + case 0x660f2a: + /* cvtsi2ss */ + case 0xf30f2a: + /* cvtsi2sd */ + case 0xf20f2a: + /* cvttps2pi */ + case 0x0f2c: + /* cvttpd2pi */ + case 0x660f2c: + /* cvtps2pi */ + case 0x0f2d: + /* cvtpd2pi */ + case 0x660f2d: + /* pshufb */ + case 0x660f3800: + /* phaddw */ + case 0x660f3801: + /* phaddd */ + case 0x660f3802: + /* phaddsw */ + case 0x660f3803: + /* pmaddubsw */ + case 0x660f3804: + /* phsubw */ + case 0x660f3805: + /* phsubd */ + case 0x660f3806: + /* phaddsw */ + case 0x660f3807: + /* psignb */ + case 0x660f3808: + /* psignw */ + case 0x660f3809: + /* psignd */ + case 0x660f380a: + /* pmulhrsw */ + case 0x660f380b: + /* pblendvb */ + case 0x660f3810: + /* blendvps */ + case 0x660f3814: + /* blendvpd */ + case 0x660f3815: + /* pabsb */ + case 0x660f381c: + /* pabsw */ + case 0x660f381d: + /* pabsd */ + case 0x660f381e: + /* pmovsxbw */ + case 0x660f3820: + /* pmovsxbd */ + case 0x660f3821: + /* pmovsxbq */ + case 0x660f3822: + /* pmovsxwd */ + case 0x660f3823: + /* pmovsxwq */ + case 0x660f3824: + /* pmovsxdq */ + case 0x660f3825: + /* pmuldq */ + case 0x660f3828: + /* pcmpeqq */ + case 0x660f3829: + /* movntdqa */ + case 0x660f382a: + /* roundps */ + case 0x660f3a08: + /* roundpd */ + case 0x660f3a09: + /* roundss */ + case 0x660f3a0a: + /* roundsd */ + case 0x660f3a0b: + /* blendps */ + case 0x660f3a0c: + /* blendpd */ + case 0x660f3a0d: + /* pblendw */ + case 0x660f3a0e: + /* palignr */ + case 0x660f3a0f: + /* pinsrb */ + case 0x660f3a20: + /* insertps */ + case 0x660f3a21: + /* pinsrd pinsrq */ + case 0x660f3a22: + /* dpps */ + case 0x660f3a40: + /* dppd */ + case 0x660f3a41: + /* mpsadbw */ + case 0x660f3a42: + /* pcmpestrm */ + case 0x660f3a60: + /* pcmpestri */ + case 0x660f3a61: + /* pcmpistrm */ + case 0x660f3a62: + /* pcmpistri */ + case 0x660f3a63: + /* sqrtps */ + case 0x0f51: + /* sqrtpd */ + case 0x660f51: + /* sqrtsd */ + case 0xf20f51: + /* sqrtss */ + case 0xf30f51: + /* rsqrtps */ + case 0x0f52: + /* rsqrtss */ + case 0xf30f52: + /* rcpps */ + case 0x0f53: + /* rcpss */ + case 0xf30f53: + /* andps */ + case 0x0f54: + /* andpd */ + case 0x660f54: + /* andnps */ + case 0x0f55: + /* andnpd */ + case 0x660f55: + /* orps */ + case 0x0f56: + /* orpd */ + case 0x660f56: + /* xorps */ + case 0x0f57: + /* xorpd */ + case 0x660f57: + /* addps */ + case 0x0f58: + /* addpd */ + case 0x660f58: + /* addsd */ + case 0xf20f58: + /* addss */ + case 0xf30f58: + /* mulps */ + case 0x0f59: + /* mulpd */ + case 0x660f59: + /* mulsd */ + case 0xf20f59: + /* mulss */ + case 0xf30f59: + /* cvtps2pd */ + case 0x0f5a: + /* cvtpd2ps */ + case 0x660f5a: + /* cvtsd2ss */ + case 0xf20f5a: + /* cvtss2sd */ + case 0xf30f5a: + /* cvtdq2ps */ + case 0x0f5b: + /* cvtps2dq */ + case 0x660f5b: + /* cvttps2dq */ + case 0xf30f5b: + /* subps */ + case 0x0f5c: + /* subpd */ + case 0x660f5c: + /* subsd */ + case 0xf20f5c: + /* subss */ + case 0xf30f5c: + /* minps */ + case 0x0f5d: + /* minpd */ + case 0x660f5d: + /* minsd */ + case 0xf20f5d: + /* minss */ + case 0xf30f5d: + /* divps */ + case 0x0f5e: + /* divpd */ + case 0x660f5e: + /* divsd */ + case 0xf20f5e: + /* divss */ + case 0xf30f5e: + /* maxps */ + case 0x0f5f: + /* maxpd */ + case 0x660f5f: + /* maxsd */ + case 0xf20f5f: + /* maxss */ + case 0xf30f5f: + /* punpcklbw */ + case 0x660f60: + /* punpcklwd */ + case 0x660f61: + /* punpckldq */ + case 0x660f62: + /* packsswb */ + case 0x660f63: + /* pcmpgtb */ + case 0x660f64: + /* pcmpgtw */ + case 0x660f65: + /* pcmpgtl */ + case 0x660f66: + /* packuswb */ + case 0x660f67: + /* punpckhbw */ + case 0x660f68: + /* punpckhwd */ + case 0x660f69: + /* punpckhdq */ + case 0x660f6a: + /* packssdw */ + case 0x660f6b: + /* punpcklqdq */ + case 0x660f6c: + /* punpckhqdq */ + case 0x660f6d: + /* movd */ + case 0x660f6e: + /* movdqa */ + case 0x660f6f: + /* movdqu */ + case 0xf30f6f: + /* pshufd */ + case 0x660f70: + /* pshuflw */ + case 0xf20f70: + /* pshufhw */ + case 0xf30f70: + /* pcmpeqb */ + case 0x660f74: + /* pcmpeqw */ + case 0x660f75: + /* pcmpeql */ + case 0x660f76: + /* haddpd */ + case 0x660f7c: + /* haddps */ + case 0xf20f7c: + /* hsubpd */ + case 0x660f7d: + /* hsubps */ + case 0xf20f7d: + /* movq */ + case 0xf30f7e: + /* cmpps */ + case 0x0fc2: + /* cmppd */ + case 0x660fc2: + /* cmpsd */ + case 0xf20fc2: + /* cmpss */ + case 0xf30fc2: + /* pinsrw */ + case 0x660fc4: + /* shufps */ + case 0x0fc6: + /* shufpd */ + case 0x660fc6: + /* addsubpd */ + case 0x660fd0: + /* addsubps */ + case 0xf20fd0: + /* psrlw */ + case 0x660fd1: + /* psrld */ + case 0x660fd2: + /* psrlq */ + case 0x660fd3: + /* paddq */ + case 0x660fd4: + /* pmullw */ + case 0x660fd5: + /* movq2dq */ + case 0xf30fd6: + /* psubusb */ + case 0x660fd8: + /* psubusw */ + case 0x660fd9: + /* pminub */ + case 0x660fda: + /* pand */ + case 0x660fdb: + /* paddusb */ + case 0x660fdc: + /* paddusw */ + case 0x660fdd: + /* pmaxub */ + case 0x660fde: + /* pandn */ + case 0x660fdf: + /* pavgb */ + case 0x660fe0: + /* psraw */ + case 0x660fe1: + /* psrad */ + case 0x660fe2: + /* pavgw */ + case 0x660fe3: + /* pmulhuw */ + case 0x660fe4: + /* pmulhw */ + case 0x660fe5: + /* cvttpd2dq */ + case 0x660fe6: + /* cvtpd2dq */ + case 0xf20fe6: + /* cvtdq2pd */ + case 0xf30fe6: + /* psubsb */ + case 0x660fe8: + /* psubsw */ + case 0x660fe9: + /* pminsw */ + case 0x660fea: + /* por */ + case 0x660feb: + /* paddsb */ + case 0x660fec: + /* paddsw */ + case 0x660fed: + /* pmaxsw */ + case 0x660fee: + /* pxor */ + case 0x660fef: + /* lddqu */ + case 0x660ff0: + /* psllw */ + case 0x660ff1: + /* pslld */ + case 0x660ff2: + /* psllq */ + case 0x660ff3: + /* pmuludq */ + case 0x660ff4: + /* pmaddwd */ + case 0x660ff5: + /* psadbw */ + case 0x660ff6: + /* psubb */ + case 0x660ff8: + /* psubw */ + case 0x660ff9: + /* psubl */ + case 0x660ffa: + /* psubq */ + case 0x660ffb: + /* paddb */ + case 0x660ffc: + /* paddw */ + case 0x660ffd: + /* paddl */ + case 0x660ffe: + if (i386_record_modrm (&ir)) + return -1; + ir.reg |= rex_r; + if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.reg)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.reg); + if ((opcode & 0xfffffffc) == 0x660f3a60) + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + /* movups */ + case 0x0f11: + /* movupd */ + case 0x660f11: + /* movss */ + case 0xf30f11: + /* movsd */ + case 0xf20f11: + /* movlps */ + case 0x0f13: + /* movlpd */ + case 0x660f13: + /* movhps */ + case 0x0f17: + /* movhpd */ + case 0x660f17: + /* movaps */ + case 0x0f29: + /* movapd */ + case 0x660f29: + /* pextrb */ + case 0x660f3a14: + /* pextrw */ + case 0x660f3a15: + /* pextrd pextrq */ + case 0x660f3a16: + /* extractps */ + case 0x660f3a17: + /* movdqa */ + case 0x660f7f: + /* movdqu */ + case 0xf30f7f: + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + { + if (opcode == 0x0f13 || opcode == 0x660f13 + || opcode == 0x0f17 || opcode == 0x660f17) + goto no_support; + ir.rm |= ir.rex_b; + if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.rm); + } + else + { + switch (opcode) + { + case 0x660f3a14: + ir.ot = OT_BYTE; + break; + case 0x660f3a15: + ir.ot = OT_WORD; + break; + case 0x660f3a16: + ir.ot = OT_LONG; + break; + case 0x660f3a17: + ir.ot = OT_QUAD; + break; + default: + ir.ot = OT_DQUAD; + break; + } + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + /* movntps */ + case 0x0f2b: + /* movntpd */ + case 0x660f2b: + /* movntq */ + case 0x0fe7: + /* movntdq */ + case 0x660fe7: + if (ir.mod == 3) + goto no_support; + if (opcode == 0x0fe7) + ir.ot = OT_QUAD; + else + ir.ot = OT_DQUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + break; + + /* cvttss2si */ + case 0xf30f2c: + /* cvttsd2si */ + case 0xf20f2c: + /* cvtss2si */ + case 0xf30f2d: + /* cvtsd2si */ + case 0xf20f2d: + /* crc32 */ + case 0xf20f38f0: + /* crc32 */ + case 0xf20f38f1: + /* movmskps */ + case 0x0f50: + /* movmskpd */ + case 0x660f50: + /* pextrw */ + case 0x0fc5: + /* pextrw */ + case 0x660fc5: + /* pmovmskb */ + case 0x0fd7: + /* pmovmskb */ + case 0x660fd7: + I386_RECORD_ARCH_LIST_ADD_REG (ir.reg | rex_r); + break; + + /* pshufb */ + case 0x0f3800: + /* phaddw */ + case 0x0f3801: + /* phaddd */ + case 0x0f3802: + /* phaddsw */ + case 0x0f3803: + /* pmaddubsw */ + case 0x0f3804: + /* phsubw */ + case 0x0f3805: + /* phsubd */ + case 0x0f3806: + /* phaddsw */ + case 0x0f3807: + /* psignb */ + case 0x0f3808: + /* psignw */ + case 0x0f3809: + /* psignd */ + case 0x0f380a: + /* pmulhrsw */ + case 0x0f380b: + /* pabsb */ + case 0x0f381c: + /* pabsw */ + case 0x0f381d: + /* pabsd */ + case 0x0f381e: + /* packusdw */ + case 0x0f382b: + /* pmovzxbw */ + case 0x0f3830: + /* pmovzxbd */ + case 0x0f3831: + /* pmovzxbq */ + case 0x0f3832: + /* pmovzxwd */ + case 0x0f3833: + /* pmovzxwq */ + case 0x0f3834: + /* pmovzxdq */ + case 0x0f3835: + /* pcmpgtq */ + case 0x0f3837: + /* pminsb */ + case 0x0f3838: + /* pminsd */ + case 0x0f3839: + /* pminuw */ + case 0x0f383a: + /* pminud */ + case 0x0f383b: + /* pmaxsb */ + case 0x0f383c: + /* pmaxsd */ + case 0x0f383d: + /* pmaxuw */ + case 0x0f383e: + /* pmaxud */ + case 0x0f383f: + /* pmulld */ + case 0x0f3840: + /* phminposuw */ + case 0x0f3841: + /* palignr */ + case 0x0f3a0f: + /* punpcklbw */ + case 0x0f60: + /* punpcklwd */ + case 0x0f61: + /* punpckldq */ + case 0x0f62: + /* packsswb */ + case 0x0f63: + /* pcmpgtb */ + case 0x0f64: + /* pcmpgtw */ + case 0x0f65: + /* pcmpgtl */ + case 0x0f66: + /* packuswb */ + case 0x0f67: + /* punpckhbw */ + case 0x0f68: + /* punpckhwd */ + case 0x0f69: + /* punpckhdq */ + case 0x0f6a: + /* packssdw */ + case 0x0f6b: + /* movd */ + case 0x0f6e: + /* movq */ + case 0x0f6f: + /* pshufw */ + case 0x0f70: + /* pcmpeqb */ + case 0x0f74: + /* pcmpeqw */ + case 0x0f75: + /* pcmpeql */ + case 0x0f76: + /* pinsrw */ + case 0x0fc4: + /* psrlw */ + case 0x0fd1: + /* psrld */ + case 0x0fd2: + /* psrlq */ + case 0x0fd3: + /* paddq */ + case 0x0fd4: + /* pmullw */ + case 0x0fd5: + /* movdq2q */ + case 0xf20fd6: + /* psubusb */ + case 0x0fd8: + /* psubusw */ + case 0x0fd9: + /* pminub */ + case 0x0fda: + /* pand */ + case 0x0fdb: + /* paddusb */ + case 0x0fdc: + /* paddusw */ + case 0x0fdd: + /* pmaxub */ + case 0x0fde: + /* pandn */ + case 0x0fdf: + /* pavgb */ + case 0x0fe0: + /* psraw */ + case 0x0fe1: + /* psrad */ + case 0x0fe2: + /* pavgw */ + case 0x0fe3: + /* pmulhuw */ + case 0x0fe4: + /* pmulhw */ + case 0x0fe5: + /* psubsb */ + case 0x0fe8: + /* psubsw */ + case 0x0fe9: + /* pminsw */ + case 0x0fea: + /* por */ + case 0x0feb: + /* paddsb */ + case 0x0fec: + /* paddsw */ + case 0x0fed: + /* pmaxsw */ + case 0x0fee: + /* pxor */ + case 0x0fef: + /* psllw */ + case 0x0ff1: + /* pslld */ + case 0x0ff2: + /* psllq */ + case 0x0ff3: + /* pmuludq */ + case 0x0ff4: + /* pmaddwd */ + case 0x0ff5: + /* psadbw */ + case 0x0ff6: + /* psubb */ + case 0x0ff8: + /* psubw */ + case 0x0ff9: + /* psubl */ + case 0x0ffa: + /* psubq */ + case 0x0ffb: + /* paddb */ + case 0x0ffc: + /* paddw */ + case 0x0ffd: + /* paddl */ + case 0x0ffe: + if (i386_record_modrm (&ir)) + return -1; + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_MM0_REGNUM (tdep) + ir.reg); + break; + + /* psllw */ + case 0x0f71: + /* pslld */ + case 0x0f72: + /* psllq */ + case 0x0f73: + if (i386_record_modrm (&ir)) + return -1; + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_MM0_REGNUM (tdep) + ir.rm); + break; + + /* psllw */ + case 0x660f71: + /* pslld */ + case 0x660f72: + /* psllq */ + case 0x660f73: + if (i386_record_modrm (&ir)) + return -1; + ir.rm |= ir.rex_b; + if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.rm); + break; + + /* movd */ + case 0x0f7e: + /* movd */ + case 0x660f7e: + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + I386_RECORD_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); + else + { + if (ir.dflag == 2) + ir.ot = OT_QUAD; + else + ir.ot = OT_LONG; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + /* movq */ + case 0x0f7f: + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + { + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_MM0_REGNUM (tdep) + ir.rm); + } + else + { + ir.ot = OT_QUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + /* popcnt */ + case 0xf30fb8: + if (i386_record_modrm (&ir)) + return -1; + I386_RECORD_ARCH_LIST_ADD_REG (ir.reg); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + /* movq */ + case 0x660fd6: + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + { + ir.rm |= ir.rex_b; + if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.rm); + } + else + { + ir.ot = OT_QUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + /* ptest */ + case 0x660f3817: + /* ucomiss */ + case 0x0f2e: + /* ucomisd */ + case 0x660f2e: + /* comiss */ + case 0x0f2f: + /* comisd */ + case 0x660f2f: + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + /* maskmovq */ + case 0x0ff7: + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_REDI_REGNUM], + &tmpulongest); + if (record_arch_list_add_mem (tmpulongest, 64)) + return -1; + break; + + /* maskmovdqu */ + case 0x660ff7: + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_REDI_REGNUM], + &tmpulongest); + if (record_arch_list_add_mem (tmpulongest, 128)) + return -1; + break; + + default: + goto no_support; + break; + } + break; default: - if (opcode > 0xff) - ir.addr -= 2; - else - ir.addr -= 1; goto no_support; break; } @@ -5719,8 +6902,9 @@ i386_process_record (struct gdbarch *gdb no_support: printf_unfiltered (_("Process record doesn't support instruction 0x%02x " - "at address %s.\n"), - (unsigned int) (opcode), paddress (gdbarch, ir.addr)); + "at address %s.\n"), + (unsigned int) (opcode), + paddress (gdbarch, ir.orig_addr)); return -1; } --001485ea8b4c31fa01047a8af940 Content-Type: text/plain; charset=US-ASCII; name="prec-x86-sse.txt" Content-Disposition: attachment; filename="prec-x86-sse.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g34mtfwu0 Content-length: 44392 LS0tCiBpMzg2LXRkZXAuYyB8IDEyMTYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZp bGUgY2hhbmdlZCwgMTIwMCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMo LSkKCi0tLSBhL2kzODYtdGRlcC5jCisrKyBiL2kzODYtdGRlcC5jCkBAIC0y ODQ4LDYgKzI4NDgsNyBAQCBlbnVtCiAgIE9UX1dPUkQsCiAgIE9UX0xPTkcs CiAgIE9UX1FVQUQsCisgIE9UX0RRVUFELAogfTsKIAogLyogaTM4NiBhcml0 aC9sb2dpYyBvcGVyYXRpb25zICovCkBAIC0zMjk1LDcgKzMyOTYsNyBAQCBp Mzg2X3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgIGly LmRmbGFnID0gMTsKICAgaXIub3ZlcnJpZGUgPSAtMTsKICAgaXIucG9wbF9l c3BfaGFjayA9IDA7Ci0gIGlyLnJlZ21hcCA9IGdkYmFyY2hfdGRlcCAoZ2Ri YXJjaCktPnJlY29yZF9yZWdtYXA7CisgIGlyLnJlZ21hcCA9IHRkZXAtPnJl Y29yZF9yZWdtYXA7CiAgIGlyLmdkYmFyY2ggPSBnZGJhcmNoOwogCiAgIGlm IChyZWNvcmRfZGVidWcgPiAxKQpAQCAtMzQxMyw3ICszNDE0LDcgQEAgaTM4 Nl9wcm9jZXNzX3JlY29yZCAoc3RydWN0IGdkYmFyY2ggKmdkYgogCSAgcmV0 dXJuIC0xOwogCX0KICAgICAgIGlyLmFkZHIrKzsKLSAgICAgIG9wY29kZSA9 ICh1aW50MTZfdCkgdG1wdTggfCAweDBmMDA7CisgICAgICBvcGNvZGUgPSAo dWludDMyX3QpIHRtcHU4IHwgMHgwZjAwOwogICAgICAgZ290byByZXN3aXRj aDsKICAgICAgIGJyZWFrOwogCkBAIC01MjE3LDcgKzUyMTgsNyBAQCBpMzg2 X3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAJICB9CiAJ aXIuYWRkcisrOwogCWlmICh0bXB1OCAhPSAweDgwCi0JICAgIHx8IGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfaW50eDgwX3JlY29yZCA9PSBOVUxM KQorCSAgICB8fCB0ZGVwLT5pMzg2X2ludHg4MF9yZWNvcmQgPT0gTlVMTCkK IAkgIHsKIAkgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVj b3JkIGRvZXNuJ3Qgc3VwcG9ydCAiCiAJCQkJICJpbnN0cnVjdGlvbiBpbnQg MHglMDJ4LlxuIiksCkBAIC01MjI1LDcgKzUyMjYsNyBAQCBpMzg2X3Byb2Nl c3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAJICAgIGlyLmFkZHIg LT0gMjsKIAkgICAgZ290byBub19zdXBwb3J0OwogCSAgfQotCXJldCA9IGdk YmFyY2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfaW50eDgwX3JlY29yZCAoaXIu cmVnY2FjaGUpOworCXJldCA9IHRkZXAtPmkzODZfaW50eDgwX3JlY29yZCAo aXIucmVnY2FjaGUpOwogCWlmIChyZXQpCiAJICByZXR1cm4gcmV0OwogICAg ICAgfQpAQCAtNTMyMiwxNCArNTMyMywxNCBAQCBpMzg2X3Byb2Nlc3NfcmVj b3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgICAgICAgICAgICBpci5hZGRy IC09IDI7CiAgICAgICAgICAgICBnb3RvIG5vX3N1cHBvcnQ7CiAgICAgICAg ICAgfQotCWlmIChnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2X3N5c2Vu dGVyX3JlY29yZCA9PSBOVUxMKQorCWlmICh0ZGVwLT5pMzg2X3N5c2VudGVy X3JlY29yZCA9PSBOVUxMKQogCSAgewogCSAgICBwcmludGZfdW5maWx0ZXJl ZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKIAkJCQkg Imluc3RydWN0aW9uIHN5c2VudGVyLlxuIikpOwogCSAgICBpci5hZGRyIC09 IDI7CiAJICAgIGdvdG8gbm9fc3VwcG9ydDsKIAkgIH0KLQlyZXQgPSBnZGJh cmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2X3N5c2VudGVyX3JlY29yZCAoaXIu cmVnY2FjaGUpOworCXJldCA9IHRkZXAtPmkzODZfc3lzZW50ZXJfcmVjb3Jk IChpci5yZWdjYWNoZSk7CiAJaWYgKHJldCkKIAkgIHJldHVybiByZXQ7CiAg ICAgICB9CkBAIC01MzQ3LDE0ICs1MzQ4LDE0IEBAIGkzODZfcHJvY2Vzc19y ZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpnZGIKICAgICBjYXNlIDB4MGYwNToK ICAgICAgIHsKIAlpbnQgcmV0OwotCWlmIChnZGJhcmNoX3RkZXAgKGdkYmFy Y2gpLT5pMzg2X3N5c2NhbGxfcmVjb3JkID09IE5VTEwpCisJaWYgKHRkZXAt PmkzODZfc3lzY2FsbF9yZWNvcmQgPT0gTlVMTCkKIAkgIHsKIAkgICAgcHJp bnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3Vw cG9ydCAiCiAJCQkJICJpbnN0cnVjdGlvbiBzeXNjYWxsLlxuIikpOwogCSAg ICBpci5hZGRyIC09IDI7CiAJICAgIGdvdG8gbm9fc3VwcG9ydDsKIAkgIH0K LQlyZXQgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2X3N5c2NhbGxf cmVjb3JkIChpci5yZWdjYWNoZSk7CisJcmV0ID0gdGRlcC0+aTM4Nl9zeXNj YWxsX3JlY29yZCAoaXIucmVnY2FjaGUpOwogCWlmIChyZXQpCiAJICByZXR1 cm4gcmV0OwogICAgICAgfQpAQCAtNTY5OCwxNCArNTY5OSwxMTk2IEBAIGkz ODZfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpnZGIKICAgICAg IEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX0VG TEFHU19SRUdOVU0pOwogICAgICAgYnJlYWs7CiAKLSAgICAgIC8qIE1NWC9T U0UvU1NFMi9QTkkgc3VwcG9ydCAqLwotICAgICAgLyogWFhYICovCisgICAg LyogTU1YIDNETm93ISBTU0UgU1NFMiBTU0UzIFNTU0UzIFNTRTQgKi8KKyAg ICAvKiAzRE5vdyEgcHJlZmV0Y2ggKi8KKyAgICBjYXNlIDB4MGYwZDoKKyAg ICAgIGJyZWFrOworCisgICAgLyogM0ROb3chIGZlbW1zICovCisgICAgY2Fz ZSAweDBmMGU6CisgICAgLyogZW1tcyAqLworICAgIGNhc2UgMHgwZjc3Ogor ICAgICAgaWYgKGkzODZfZnBjX3JlZ251bV9wIChnZGJhcmNoLCBJMzg3X0ZU QUdfUkVHTlVNKHRkZXApKSkKKyAgICAgICAgZ290byBub19zdXBwb3J0Owor ICAgICAgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChpci5yZWdjYWNoZSwg STM4N19GVEFHX1JFR05VTSh0ZGVwKSk7CisgICAgICBicmVhazsKKworICAg IC8qIDNETm93ISBkYXRhICovCisgICAgY2FzZSAweDBmMGY6CisgICAgICBp ZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCZpcikpCisJcmV0dXJuIC0xOworICAg ICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAoaXIuYWRkciwgJnRtcHU4LCAx KSkKKyAgICAgICAgeworICAgICAgICAgIGlmIChyZWNvcmRfZGVidWcpCisJ ICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJlY29yZDogZXJy b3IgcmVhZGluZyBtZW1vcnkgYXQgIgorCSAgICAgICAgICAgICAgICAgICAg ICAgICAiYWRkciAlcyBsZW4gPSAxLlxuIiksCisJICAgICAgICAgICAgICAg ICAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgaXIuYWRkcikpOworICAgICAg ICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgaXIuYWRkcisrOwor ICAgICAgc3dpdGNoICh0bXB1OCkKKyAgICAgICAgeworICAgICAgICAvKiAz RE5vdyEgcGkyZncgKi8KKyAgICAgICAgY2FzZSAweDBjOgorICAgICAgICAv KiAzRE5vdyEgcGkyZmQgKi8KKyAgICAgICAgY2FzZSAweDBkOgorICAgICAg ICAvKiAzRE5vdyEgcGYyaXcgKi8KKyAgICAgICAgY2FzZSAweDFjOgorICAg ICAgICAvKiAzRE5vdyEgcGYyaWQgKi8KKyAgICAgICAgY2FzZSAweDFkOgor ICAgICAgICAvKiAzRE5vdyEgcGZuYWNjICovCisgICAgICAgIGNhc2UgMHg4 YToKKyAgICAgICAgLyogM0ROb3chIHBmcG5hY2MgKi8KKyAgICAgICAgY2Fz ZSAweDhlOgorICAgICAgICAvKiAzRE5vdyEgcGZjbXBnZSAqLworICAgICAg ICBjYXNlIDB4OTA6CisgICAgICAgIC8qIDNETm93ISBwZm1pbiAqLworICAg ICAgICBjYXNlIDB4OTQ6CisgICAgICAgIC8qIDNETm93ISBwZnJjcCAqLwor ICAgICAgICBjYXNlIDB4OTY6CisgICAgICAgIC8qIDNETm93ISBwZnJzcXJ0 ICovCisgICAgICAgIGNhc2UgMHg5NzoKKyAgICAgICAgLyogM0ROb3chIHBm c3ViICovCisgICAgICAgIGNhc2UgMHg5YToKKyAgICAgICAgLyogM0ROb3ch IHBmYWRkICovCisgICAgICAgIGNhc2UgMHg5ZToKKyAgICAgICAgLyogM0RO b3chIHBmY21wZ3QgKi8KKyAgICAgICAgY2FzZSAweGEwOgorICAgICAgICAv KiAzRE5vdyEgcGZtYXggKi8KKyAgICAgICAgY2FzZSAweGE0OgorICAgICAg ICAvKiAzRE5vdyEgcGZyY3BpdDEgKi8KKyAgICAgICAgY2FzZSAweGE2Ogor ICAgICAgICAvKiAzRE5vdyEgcGZyc3FpdDEgKi8KKyAgICAgICAgY2FzZSAw eGE3OgorICAgICAgICAvKiAzRE5vdyEgcGZzdWJyICovCisgICAgICAgIGNh c2UgMHhhYToKKyAgICAgICAgLyogM0ROb3chIHBmYWNjICovCisgICAgICAg IGNhc2UgMHhhZToKKyAgICAgICAgLyogM0ROb3chIHBmY21wZXEgKi8KKyAg ICAgICAgY2FzZSAweGIwOgorICAgICAgICAvKiAzRE5vdyEgcGZtdWwgKi8K KyAgICAgICAgY2FzZSAweGI0OgorICAgICAgICAvKiAzRE5vdyEgcGZyY3Bp dDIgKi8KKyAgICAgICAgY2FzZSAweGI2OgorICAgICAgICAvKiAzRE5vdyEg cG11bGhydyAqLworICAgICAgICBjYXNlIDB4Yjc6CisgICAgICAgIC8qIDNE Tm93ISBwc3dhcGQgKi8KKyAgICAgICAgY2FzZSAweGJiOgorICAgICAgICAv KiAzRE5vdyEgcGF2Z3VzYiAqLworICAgICAgICBjYXNlIDB4YmY6CisgICAg ICAgICAgaWYgKCFpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgSTM4N19N TTBfUkVHTlVNICh0ZGVwKSArIGlyLnJlZykpCisgICAgICAgICAgICBnb3Rv IG5vX3N1cHBvcnRfM2Rub3dfZGF0YTsKKyAgICAgICAgICByZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hlLCBpci5yZWcpOworICAgICAg ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Citub19zdXBwb3J0XzNk bm93X2RhdGE6CisgICAgICAgICAgb3Bjb2RlID0gKG9wY29kZSA8PCA4KSB8 IHRtcHU4OworICAgICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgICAg ICBicmVhazsKKyAgICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAvKiBy c20gKi8KKyAgICBjYXNlIDB4MGZhYToKKyAgICAgIEkzODZfUkVDT1JEX0FS Q0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX0VGTEFHU19SRUdOVU0pOwor ICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcgKFg4Nl9SRUNP UkRfUkVBWF9SRUdOVU0pOworICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNU X0FERF9SRUcgKFg4Nl9SRUNPUkRfUkVDWF9SRUdOVU0pOworICAgICAgSTM4 Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcgKFg4Nl9SRUNPUkRfUkVEWF9S RUdOVU0pOworICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcg KFg4Nl9SRUNPUkRfUkVCWF9SRUdOVU0pOworICAgICAgSTM4Nl9SRUNPUkRf QVJDSF9MSVNUX0FERF9SRUcgKFg4Nl9SRUNPUkRfUkVTUF9SRUdOVU0pOwor ICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcgKFg4Nl9SRUNP UkRfUkVCUF9SRUdOVU0pOworICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNU X0FERF9SRUcgKFg4Nl9SRUNPUkRfUkVTSV9SRUdOVU0pOworICAgICAgSTM4 Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcgKFg4Nl9SRUNPUkRfUkVESV9S RUdOVU0pOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDB4MGZhZToKKyAg ICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoJmlyKSkKKwlyZXR1cm4gLTE7 CisgICAgICBzd2l0Y2goaXIucmVnKQorICAgICAgICB7CisgICAgICAgIC8q IGZ4c2F2ZSAqLworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgeworICAg ICAgICAgICAgdWludDY0X3QgdG1wdTY0OworCisgICAgICAgICAgICBJMzg2 X1JFQ09SRF9BUkNIX0xJU1RfQUREX1JFRyAoWDg2X1JFQ09SRF9FRkxBR1Nf UkVHTlVNKTsKKwkgICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybV9hZGRy ICgmaXIsICZ0bXB1NjQpKQorCSAgICAgIHJldHVybiAtMTsKKyAgICAgICAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHU2NCwgNTEy KSkKKyAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgIH0KKyAg ICAgICAgICBicmVhazsKKworICAgICAgICAvKiBmeHJzdG9yICovCisgICAg ICAgIGNhc2UgMToKKyAgICAgICAgICB7CisgICAgICAgICAgICBpbnQgaTsK KworICAgICAgICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcg KFg4Nl9SRUNPUkRfRUZMQUdTX1JFR05VTSk7CisKKyAgICAgICAgICAgIGZv ciAoaSA9IEkzODdfTU0wX1JFR05VTSAodGRlcCk7CisgICAgICAgICAgICAg ICAgIGkzODZfbW14X3JlZ251bV9wIChnZGJhcmNoLCBpKTsgaSsrKQorICAg ICAgICAgICAgICByZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2Nh Y2hlLCBpKTsKKworICAgICAgICAgICAgZm9yIChpID0gSTM4N19YTU0wX1JF R05VTSAodGRlcCk7CisgICAgICAgICAgICAgICAgIGkzODZfc3NlX3JlZ251 bV9wIChnZGJhcmNoLCBpKTsgaSsrKQorICAgICAgICAgICAgICByZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hlLCBpKTsKKworICAgICAg ICAgICAgaWYgKGkzODZfbXhjc3JfcmVnbnVtX3AgKGdkYmFyY2gsIEkzODdf TVhDU1JfUkVHTlVNKHRkZXApKSkKKyAgICAgICAgICAgICAgcmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChpci5yZWdjYWNoZSwgSTM4N19NWENTUl9SRUdO VU0odGRlcCkpOworCisgICAgICAgICAgICBmb3IgKGkgPSBJMzg3X1NUMF9S RUdOVU0gKHRkZXApOworICAgICAgICAgICAgICAgICBpMzg2X2ZwX3JlZ251 bV9wIChnZGJhcmNoLCBpKTsgaSsrKQorICAgICAgICAgICAgICByZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hlLCBpKTsKKworICAgICAg ICAgICAgZm9yIChpID0gSTM4N19GQ1RSTF9SRUdOVU0gKHRkZXApOworICAg ICAgICAgICAgICAgICBpMzg2X2ZwY19yZWdudW1fcCAoZ2RiYXJjaCwgaSk7 IGkrKykKKyAgICAgICAgICAgICAgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChpci5yZWdjYWNoZSwgaSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJy ZWFrOworCisgICAgICAgIC8qIGxkbXhjc3IgKi8KKyAgICAgICAgY2FzZSAy OgorICAgICAgICAgIGlmICghaTM4Nl9teGNzcl9yZWdudW1fcCAoZ2RiYXJj aCwgSTM4N19NWENTUl9SRUdOVU0odGRlcCkpKQorICAgICAgICAgICAgZ290 byBub19zdXBwb3J0OworICAgICAgICAgIHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAoaXIucmVnY2FjaGUsIEkzODdfTVhDU1JfUkVHTlVNKHRkZXApKTsK KyAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBzdG14Y3NyICovCisg ICAgICAgIGNhc2UgMzoKKyAgICAgICAgICBpci5vdCA9IE9UX0xPTkc7Cisg ICAgICAgICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoJmlyKSkKKyAg ICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICBicmVhazsKKworICAg ICAgICAvKiBsZmVuY2UgKi8KKyAgICAgICAgY2FzZSA1OgorICAgICAgICAv KiBtZmVuY2UgKi8KKyAgICAgICAgY2FzZSA2OgorICAgICAgICAvKiBzZmVu Y2UgY2xmbHVzaCAqLworICAgICAgICBjYXNlIDc6CisgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBvcGNvZGUgPSAo b3Bjb2RlIDw8IDgpIHwgaXIubW9kcm07CisgICAgICAgICAgZ290byBub19z dXBwb3J0OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICBi cmVhazsKKworICAgIC8qIG1vdm50aSAqLworICAgIGNhc2UgMHgwZmMzOgor ICAgICAgaXIub3QgPSAoaXIuZGZsYWcgPT0gMikgPyBPVF9RVUFEIDogT1Rf TE9ORzsKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoJmlyKSkKKwly ZXR1cm4gLTE7CisgICAgICBpZiAoaXIubW9kID09IDMpCisgICAgICAgIGdv dG8gbm9fc3VwcG9ydDsKKyAgICAgIGlyLnJlZyB8PSByZXhfcjsKKyAgICAg IGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCZpcikpCisgICAgICAgIHJl dHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgLyogQWRkIHByZWZpeCB0 byBvcGNvZGUuICAqLworICAgIGNhc2UgMHgwZjEwOgorICAgIGNhc2UgMHgw ZjExOgorICAgIGNhc2UgMHgwZjEyOgorICAgIGNhc2UgMHgwZjEzOgorICAg IGNhc2UgMHgwZjE0OgorICAgIGNhc2UgMHgwZjE2OgorICAgIGNhc2UgMHgw ZjE3OgorICAgIGNhc2UgMHgwZjI4OgorICAgIGNhc2UgMHgwZjI5OgorICAg IGNhc2UgMHgwZjJhOgorICAgIGNhc2UgMHgwZjJiOgorICAgIGNhc2UgMHgw ZjJjOgorICAgIGNhc2UgMHgwZjJkOgorICAgIGNhc2UgMHgwZjJlOgorICAg IGNhc2UgMHgwZjJmOgorICAgIGNhc2UgMHgwZjM4OgorICAgIGNhc2UgMHgw ZjM5OgorICAgIGNhc2UgMHgwZjNhOgorICAgIGNhc2UgMHgwZjUwOgorICAg IGNhc2UgMHgwZjUxOgorICAgIGNhc2UgMHgwZjUyOgorICAgIGNhc2UgMHgw ZjUzOgorICAgIGNhc2UgMHgwZjU0OgorICAgIGNhc2UgMHgwZjU1OgorICAg IGNhc2UgMHgwZjU2OgorICAgIGNhc2UgMHgwZjU3OgorICAgIGNhc2UgMHgw ZjU4OgorICAgIGNhc2UgMHgwZjU5OgorICAgIGNhc2UgMHgwZjVhOgorICAg IGNhc2UgMHgwZjViOgorICAgIGNhc2UgMHgwZjVjOgorICAgIGNhc2UgMHgw ZjVkOgorICAgIGNhc2UgMHgwZjVlOgorICAgIGNhc2UgMHgwZjVmOgorICAg IGNhc2UgMHgwZjYwOgorICAgIGNhc2UgMHgwZjYxOgorICAgIGNhc2UgMHgw ZjYyOgorICAgIGNhc2UgMHgwZjYzOgorICAgIGNhc2UgMHgwZjY0OgorICAg IGNhc2UgMHgwZjY1OgorICAgIGNhc2UgMHgwZjY2OgorICAgIGNhc2UgMHgw ZjY3OgorICAgIGNhc2UgMHgwZjY4OgorICAgIGNhc2UgMHgwZjY5OgorICAg IGNhc2UgMHgwZjZhOgorICAgIGNhc2UgMHgwZjZiOgorICAgIGNhc2UgMHgw ZjZjOgorICAgIGNhc2UgMHgwZjZkOgorICAgIGNhc2UgMHgwZjZlOgorICAg IGNhc2UgMHgwZjZmOgorICAgIGNhc2UgMHgwZjcwOgorICAgIGNhc2UgMHgw ZjcxOgorICAgIGNhc2UgMHgwZjcyOgorICAgIGNhc2UgMHgwZjczOgorICAg IGNhc2UgMHgwZjc0OgorICAgIGNhc2UgMHgwZjc1OgorICAgIGNhc2UgMHgw Zjc2OgorICAgIGNhc2UgMHgwZjdjOgorICAgIGNhc2UgMHgwZjdkOgorICAg IGNhc2UgMHgwZjdlOgorICAgIGNhc2UgMHgwZjdmOgorICAgIGNhc2UgMHgw ZmI4OgorICAgIGNhc2UgMHgwZmMyOgorICAgIGNhc2UgMHgwZmM0OgorICAg IGNhc2UgMHgwZmM1OgorICAgIGNhc2UgMHgwZmM2OgorICAgIGNhc2UgMHgw ZmQwOgorICAgIGNhc2UgMHgwZmQxOgorICAgIGNhc2UgMHgwZmQyOgorICAg IGNhc2UgMHgwZmQzOgorICAgIGNhc2UgMHgwZmQ0OgorICAgIGNhc2UgMHgw ZmQ1OgorICAgIGNhc2UgMHgwZmQ2OgorICAgIGNhc2UgMHgwZmQ3OgorICAg IGNhc2UgMHgwZmQ4OgorICAgIGNhc2UgMHgwZmQ5OgorICAgIGNhc2UgMHgw ZmRhOgorICAgIGNhc2UgMHgwZmRiOgorICAgIGNhc2UgMHgwZmRjOgorICAg IGNhc2UgMHgwZmRkOgorICAgIGNhc2UgMHgwZmRlOgorICAgIGNhc2UgMHgw ZmRmOgorICAgIGNhc2UgMHgwZmUwOgorICAgIGNhc2UgMHgwZmUxOgorICAg IGNhc2UgMHgwZmUyOgorICAgIGNhc2UgMHgwZmUzOgorICAgIGNhc2UgMHgw ZmU0OgorICAgIGNhc2UgMHgwZmU1OgorICAgIGNhc2UgMHgwZmU2OgorICAg IGNhc2UgMHgwZmU3OgorICAgIGNhc2UgMHgwZmU4OgorICAgIGNhc2UgMHgw ZmU5OgorICAgIGNhc2UgMHgwZmVhOgorICAgIGNhc2UgMHgwZmViOgorICAg IGNhc2UgMHgwZmVjOgorICAgIGNhc2UgMHgwZmVkOgorICAgIGNhc2UgMHgw ZmVlOgorICAgIGNhc2UgMHgwZmVmOgorICAgIGNhc2UgMHgwZmYwOgorICAg IGNhc2UgMHgwZmYxOgorICAgIGNhc2UgMHgwZmYyOgorICAgIGNhc2UgMHgw ZmYzOgorICAgIGNhc2UgMHgwZmY0OgorICAgIGNhc2UgMHgwZmY1OgorICAg IGNhc2UgMHgwZmY2OgorICAgIGNhc2UgMHgwZmY3OgorICAgIGNhc2UgMHgw ZmY4OgorICAgIGNhc2UgMHgwZmY5OgorICAgIGNhc2UgMHgwZmZhOgorICAg IGNhc2UgMHgwZmZiOgorICAgIGNhc2UgMHgwZmZjOgorICAgIGNhc2UgMHgw ZmZkOgorICAgIGNhc2UgMHgwZmZlOgorICAgICAgc3dpdGNoIChwcmVmaXhl cykKKyAgICAgICAgeworICAgICAgICBjYXNlIFBSRUZJWF9SRVBOWjoKKyAg ICAgICAgICBvcGNvZGUgfD0gMHhmMjAwMDA7CisgICAgICAgICAgYnJlYWs7 CisgICAgICAgIGNhc2UgUFJFRklYX0RBVEE6CisgICAgICAgICAgb3Bjb2Rl IHw9IDB4NjYwMDAwOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl IFBSRUZJWF9SRVBaOgorICAgICAgICAgIG9wY29kZSB8PSAweGYzMDAwMDsK KyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorcmVzd2l0Y2hfcHJlZml4 X2FkZDoKKyAgICAgIHN3aXRjaCAob3Bjb2RlKQorICAgICAgICB7CisgICAg ICAgIGNhc2UgMHgwZjM4OgorICAgICAgICBjYXNlIDB4NjYwZjM4OgorICAg ICAgICBjYXNlIDB4ZjIwZjM4OgorICAgICAgICBjYXNlIDB4MGYzYToKKyAg ICAgICAgY2FzZSAweDY2MGYzYToKKyAgICAgICAgICBpZiAodGFyZ2V0X3Jl YWRfbWVtb3J5IChpci5hZGRyLCAmdG1wdTgsIDEpKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICBpZiAocmVjb3JkX2RlYnVnKQorCSAgICAgICAg cHJpbnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkOiBlcnJvciBy ZWFkaW5nIG1lbW9yeSBhdCAiCisJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiYWRkciAlcyBsZW4gPSAxLlxuIiksCisJICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGlyLmFkZHIpKTsKKyAg ICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAg ICAgICAgaXIuYWRkcisrOworICAgICAgICAgIG9wY29kZSA9ICh1aW50MzJf dCkgdG1wdTggfCBvcGNvZGUgPDwgNDsKKyAgICAgICAgICBnb3RvIHJlc3dp dGNoX3ByZWZpeF9hZGQ7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg LyogbW92dXBzICovCisgICAgICAgIGNhc2UgMHgwZjEwOgorICAgICAgICAv KiBtb3Z1cGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGYxMDoKKyAgICAgICAg LyogbW92c3MgKi8KKyAgICAgICAgY2FzZSAweGYzMGYxMDoKKyAgICAgICAg LyogbW92c2QgKi8KKyAgICAgICAgY2FzZSAweGYyMGYxMDoKKyAgICAgICAg LyogbW92bHBzICovCisgICAgICAgIGNhc2UgMHgwZjEyOgorICAgICAgICAv KiBtb3ZscGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGYxMjoKKyAgICAgICAg LyogbW92c2xkdXAgKi8KKyAgICAgICAgY2FzZSAweGYzMGYxMjoKKyAgICAg ICAgLyogbW92ZGR1cCAqLworICAgICAgICBjYXNlIDB4ZjIwZjEyOgorICAg ICAgICAvKiB1bnBja2xwcyAqLworICAgICAgICBjYXNlIDB4MGYxNDoKKyAg ICAgICAgLyogdW5wY2tscGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGYxNDoK KyAgICAgICAgLyogdW5wY2tocHMgKi8KKyAgICAgICAgY2FzZSAweDBmMTU6 CisgICAgICAgIC8qIHVucGNraHBkICovCisgICAgICAgIGNhc2UgMHg2NjBm MTU6CisgICAgICAgIC8qIG1vdmhwcyAqLworICAgICAgICBjYXNlIDB4MGYx NjoKKyAgICAgICAgLyogbW92aHBkICovCisgICAgICAgIGNhc2UgMHg2NjBm MTY6CisgICAgICAgIC8qIG1vdnNoZHVwICovCisgICAgICAgIGNhc2UgMHhm MzBmMTY6CisgICAgICAgIC8qIG1vdmFwcyAqLworICAgICAgICBjYXNlIDB4 MGYyODoKKyAgICAgICAgLyogbW92YXBkICovCisgICAgICAgIGNhc2UgMHg2 NjBmMjg6CisgICAgICAgIC8qIGN2dHBpMnBzICovCisgICAgICAgIGNhc2Ug MHgwZjJhOgorICAgICAgICAvKiBjdnRwaTJwZCAqLworICAgICAgICBjYXNl IDB4NjYwZjJhOgorICAgICAgICAvKiBjdnRzaTJzcyAqLworICAgICAgICBj YXNlIDB4ZjMwZjJhOgorICAgICAgICAvKiBjdnRzaTJzZCAqLworICAgICAg ICBjYXNlIDB4ZjIwZjJhOgorICAgICAgICAvKiBjdnR0cHMycGkgKi8KKyAg ICAgICAgY2FzZSAweDBmMmM6CisgICAgICAgIC8qIGN2dHRwZDJwaSAqLwor ICAgICAgICBjYXNlIDB4NjYwZjJjOgorICAgICAgICAvKiBjdnRwczJwaSAq LworICAgICAgICBjYXNlIDB4MGYyZDoKKyAgICAgICAgLyogY3Z0cGQycGkg Ki8KKyAgICAgICAgY2FzZSAweDY2MGYyZDoKKyAgICAgICAgLyogcHNodWZi ICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgwMDoKKyAgICAgICAgLyogcGhh ZGR3ICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgwMToKKyAgICAgICAgLyog cGhhZGRkICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgwMjoKKyAgICAgICAg LyogcGhhZGRzdyAqLworICAgICAgICBjYXNlIDB4NjYwZjM4MDM6CisgICAg ICAgIC8qIHBtYWRkdWJzdyAqLworICAgICAgICBjYXNlIDB4NjYwZjM4MDQ6 CisgICAgICAgIC8qIHBoc3VidyAqLworICAgICAgICBjYXNlIDB4NjYwZjM4 MDU6CisgICAgICAgIC8qIHBoc3ViZCAqLworICAgICAgICBjYXNlIDB4NjYw ZjM4MDY6CisgICAgICAgIC8qIHBoYWRkc3cgKi8KKyAgICAgICAgY2FzZSAw eDY2MGYzODA3OgorICAgICAgICAvKiBwc2lnbmIgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGYzODA4OgorICAgICAgICAvKiBwc2lnbncgKi8KKyAgICAgICAg Y2FzZSAweDY2MGYzODA5OgorICAgICAgICAvKiBwc2lnbmQgKi8KKyAgICAg ICAgY2FzZSAweDY2MGYzODBhOgorICAgICAgICAvKiBwbXVsaHJzdyAqLwor ICAgICAgICBjYXNlIDB4NjYwZjM4MGI6CisgICAgICAgIC8qIHBibGVuZHZi ICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgxMDoKKyAgICAgICAgLyogYmxl bmR2cHMgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzODE0OgorICAgICAgICAv KiBibGVuZHZwZCAqLworICAgICAgICBjYXNlIDB4NjYwZjM4MTU6CisgICAg ICAgIC8qIHBhYnNiICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgxYzoKKyAg ICAgICAgLyogcGFic3cgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzODFkOgor ICAgICAgICAvKiBwYWJzZCAqLworICAgICAgICBjYXNlIDB4NjYwZjM4MWU6 CisgICAgICAgIC8qIHBtb3ZzeGJ3ICovCisgICAgICAgIGNhc2UgMHg2NjBm MzgyMDoKKyAgICAgICAgLyogcG1vdnN4YmQgKi8KKyAgICAgICAgY2FzZSAw eDY2MGYzODIxOgorICAgICAgICAvKiBwbW92c3hicSAqLworICAgICAgICBj YXNlIDB4NjYwZjM4MjI6CisgICAgICAgIC8qIHBtb3ZzeHdkICovCisgICAg ICAgIGNhc2UgMHg2NjBmMzgyMzoKKyAgICAgICAgLyogcG1vdnN4d3EgKi8K KyAgICAgICAgY2FzZSAweDY2MGYzODI0OgorICAgICAgICAvKiBwbW92c3hk cSAqLworICAgICAgICBjYXNlIDB4NjYwZjM4MjU6CisgICAgICAgIC8qIHBt dWxkcSAqLworICAgICAgICBjYXNlIDB4NjYwZjM4Mjg6CisgICAgICAgIC8q IHBjbXBlcXEgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzODI5OgorICAgICAg ICAvKiBtb3ZudGRxYSAqLworICAgICAgICBjYXNlIDB4NjYwZjM4MmE6Cisg ICAgICAgIC8qIHJvdW5kcHMgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzYTA4 OgorICAgICAgICAvKiByb3VuZHBkICovCisgICAgICAgIGNhc2UgMHg2NjBm M2EwOToKKyAgICAgICAgLyogcm91bmRzcyAqLworICAgICAgICBjYXNlIDB4 NjYwZjNhMGE6CisgICAgICAgIC8qIHJvdW5kc2QgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGYzYTBiOgorICAgICAgICAvKiBibGVuZHBzICovCisgICAgICAg IGNhc2UgMHg2NjBmM2EwYzoKKyAgICAgICAgLyogYmxlbmRwZCAqLworICAg ICAgICBjYXNlIDB4NjYwZjNhMGQ6CisgICAgICAgIC8qIHBibGVuZHcgKi8K KyAgICAgICAgY2FzZSAweDY2MGYzYTBlOgorICAgICAgICAvKiBwYWxpZ25y ICovCisgICAgICAgIGNhc2UgMHg2NjBmM2EwZjoKKyAgICAgICAgLyogcGlu c3JiICovCisgICAgICAgIGNhc2UgMHg2NjBmM2EyMDoKKyAgICAgICAgLyog aW5zZXJ0cHMgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzYTIxOgorICAgICAg ICAvKiBwaW5zcmQgcGluc3JxICovCisgICAgICAgIGNhc2UgMHg2NjBmM2Ey MjoKKyAgICAgICAgLyogZHBwcyAqLworICAgICAgICBjYXNlIDB4NjYwZjNh NDA6CisgICAgICAgIC8qIGRwcGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGYz YTQxOgorICAgICAgICAvKiBtcHNhZGJ3ICovCisgICAgICAgIGNhc2UgMHg2 NjBmM2E0MjoKKyAgICAgICAgLyogcGNtcGVzdHJtICovCisgICAgICAgIGNh c2UgMHg2NjBmM2E2MDoKKyAgICAgICAgLyogcGNtcGVzdHJpICovCisgICAg ICAgIGNhc2UgMHg2NjBmM2E2MToKKyAgICAgICAgLyogcGNtcGlzdHJtICov CisgICAgICAgIGNhc2UgMHg2NjBmM2E2MjoKKyAgICAgICAgLyogcGNtcGlz dHJpICovCisgICAgICAgIGNhc2UgMHg2NjBmM2E2MzoKKyAgICAgICAgLyog c3FydHBzICovCisgICAgICAgIGNhc2UgMHgwZjUxOgorICAgICAgICAvKiBz cXJ0cGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY1MToKKyAgICAgICAgLyog c3FydHNkICovCisgICAgICAgIGNhc2UgMHhmMjBmNTE6CisgICAgICAgIC8q IHNxcnRzcyAqLworICAgICAgICBjYXNlIDB4ZjMwZjUxOgorICAgICAgICAv KiByc3FydHBzICovCisgICAgICAgIGNhc2UgMHgwZjUyOgorICAgICAgICAv KiByc3FydHNzICovCisgICAgICAgIGNhc2UgMHhmMzBmNTI6CisgICAgICAg IC8qIHJjcHBzICovCisgICAgICAgIGNhc2UgMHgwZjUzOgorICAgICAgICAv KiByY3BzcyAqLworICAgICAgICBjYXNlIDB4ZjMwZjUzOgorICAgICAgICAv KiBhbmRwcyAqLworICAgICAgICBjYXNlIDB4MGY1NDoKKyAgICAgICAgLyog YW5kcGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY1NDoKKyAgICAgICAgLyog YW5kbnBzICovCisgICAgICAgIGNhc2UgMHgwZjU1OgorICAgICAgICAvKiBh bmRucGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY1NToKKyAgICAgICAgLyog b3JwcyAqLworICAgICAgICBjYXNlIDB4MGY1NjoKKyAgICAgICAgLyogb3Jw ZCAqLworICAgICAgICBjYXNlIDB4NjYwZjU2OgorICAgICAgICAvKiB4b3Jw cyAqLworICAgICAgICBjYXNlIDB4MGY1NzoKKyAgICAgICAgLyogeG9ycGQg Ki8KKyAgICAgICAgY2FzZSAweDY2MGY1NzoKKyAgICAgICAgLyogYWRkcHMg Ki8KKyAgICAgICAgY2FzZSAweDBmNTg6CisgICAgICAgIC8qIGFkZHBkICov CisgICAgICAgIGNhc2UgMHg2NjBmNTg6CisgICAgICAgIC8qIGFkZHNkICov CisgICAgICAgIGNhc2UgMHhmMjBmNTg6CisgICAgICAgIC8qIGFkZHNzICov CisgICAgICAgIGNhc2UgMHhmMzBmNTg6CisgICAgICAgIC8qIG11bHBzICov CisgICAgICAgIGNhc2UgMHgwZjU5OgorICAgICAgICAvKiBtdWxwZCAqLwor ICAgICAgICBjYXNlIDB4NjYwZjU5OgorICAgICAgICAvKiBtdWxzZCAqLwor ICAgICAgICBjYXNlIDB4ZjIwZjU5OgorICAgICAgICAvKiBtdWxzcyAqLwor ICAgICAgICBjYXNlIDB4ZjMwZjU5OgorICAgICAgICAvKiBjdnRwczJwZCAq LworICAgICAgICBjYXNlIDB4MGY1YToKKyAgICAgICAgLyogY3Z0cGQycHMg Ki8KKyAgICAgICAgY2FzZSAweDY2MGY1YToKKyAgICAgICAgLyogY3Z0c2Qy c3MgKi8KKyAgICAgICAgY2FzZSAweGYyMGY1YToKKyAgICAgICAgLyogY3Z0 c3Myc2QgKi8KKyAgICAgICAgY2FzZSAweGYzMGY1YToKKyAgICAgICAgLyog Y3Z0ZHEycHMgKi8KKyAgICAgICAgY2FzZSAweDBmNWI6CisgICAgICAgIC8q IGN2dHBzMmRxICovCisgICAgICAgIGNhc2UgMHg2NjBmNWI6CisgICAgICAg IC8qIGN2dHRwczJkcSAqLworICAgICAgICBjYXNlIDB4ZjMwZjViOgorICAg ICAgICAvKiBzdWJwcyAqLworICAgICAgICBjYXNlIDB4MGY1YzoKKyAgICAg ICAgLyogc3VicGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY1YzoKKyAgICAg ICAgLyogc3Vic2QgKi8KKyAgICAgICAgY2FzZSAweGYyMGY1YzoKKyAgICAg ICAgLyogc3Vic3MgKi8KKyAgICAgICAgY2FzZSAweGYzMGY1YzoKKyAgICAg ICAgLyogbWlucHMgKi8KKyAgICAgICAgY2FzZSAweDBmNWQ6CisgICAgICAg IC8qIG1pbnBkICovCisgICAgICAgIGNhc2UgMHg2NjBmNWQ6CisgICAgICAg IC8qIG1pbnNkICovCisgICAgICAgIGNhc2UgMHhmMjBmNWQ6CisgICAgICAg IC8qIG1pbnNzICovCisgICAgICAgIGNhc2UgMHhmMzBmNWQ6CisgICAgICAg IC8qIGRpdnBzICovCisgICAgICAgIGNhc2UgMHgwZjVlOgorICAgICAgICAv KiBkaXZwZCAqLworICAgICAgICBjYXNlIDB4NjYwZjVlOgorICAgICAgICAv KiBkaXZzZCAqLworICAgICAgICBjYXNlIDB4ZjIwZjVlOgorICAgICAgICAv KiBkaXZzcyAqLworICAgICAgICBjYXNlIDB4ZjMwZjVlOgorICAgICAgICAv KiBtYXhwcyAqLworICAgICAgICBjYXNlIDB4MGY1ZjoKKyAgICAgICAgLyog bWF4cGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY1ZjoKKyAgICAgICAgLyog bWF4c2QgKi8KKyAgICAgICAgY2FzZSAweGYyMGY1ZjoKKyAgICAgICAgLyog bWF4c3MgKi8KKyAgICAgICAgY2FzZSAweGYzMGY1ZjoKKyAgICAgICAgLyog cHVucGNrbGJ3ICovCisgICAgICAgIGNhc2UgMHg2NjBmNjA6CisgICAgICAg IC8qIHB1bnBja2x3ZCAqLworICAgICAgICBjYXNlIDB4NjYwZjYxOgorICAg ICAgICAvKiBwdW5wY2tsZHEgKi8KKyAgICAgICAgY2FzZSAweDY2MGY2MjoK KyAgICAgICAgLyogcGFja3Nzd2IgKi8KKyAgICAgICAgY2FzZSAweDY2MGY2 MzoKKyAgICAgICAgLyogcGNtcGd0YiAqLworICAgICAgICBjYXNlIDB4NjYw ZjY0OgorICAgICAgICAvKiBwY21wZ3R3ICovCisgICAgICAgIGNhc2UgMHg2 NjBmNjU6CisgICAgICAgIC8qIHBjbXBndGwgKi8KKyAgICAgICAgY2FzZSAw eDY2MGY2NjoKKyAgICAgICAgLyogcGFja3Vzd2IgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGY2NzoKKyAgICAgICAgLyogcHVucGNraGJ3ICovCisgICAgICAg IGNhc2UgMHg2NjBmNjg6CisgICAgICAgIC8qIHB1bnBja2h3ZCAqLworICAg ICAgICBjYXNlIDB4NjYwZjY5OgorICAgICAgICAvKiBwdW5wY2toZHEgKi8K KyAgICAgICAgY2FzZSAweDY2MGY2YToKKyAgICAgICAgLyogcGFja3NzZHcg Ki8KKyAgICAgICAgY2FzZSAweDY2MGY2YjoKKyAgICAgICAgLyogcHVucGNr bHFkcSAqLworICAgICAgICBjYXNlIDB4NjYwZjZjOgorICAgICAgICAvKiBw dW5wY2tocWRxICovCisgICAgICAgIGNhc2UgMHg2NjBmNmQ6CisgICAgICAg IC8qIG1vdmQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY2ZToKKyAgICAgICAg LyogbW92ZHFhICovCisgICAgICAgIGNhc2UgMHg2NjBmNmY6CisgICAgICAg IC8qIG1vdmRxdSAqLworICAgICAgICBjYXNlIDB4ZjMwZjZmOgorICAgICAg ICAvKiBwc2h1ZmQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY3MDoKKyAgICAg ICAgLyogcHNodWZsdyAqLworICAgICAgICBjYXNlIDB4ZjIwZjcwOgorICAg ICAgICAvKiBwc2h1Zmh3ICovCisgICAgICAgIGNhc2UgMHhmMzBmNzA6Cisg ICAgICAgIC8qIHBjbXBlcWIgKi8KKyAgICAgICAgY2FzZSAweDY2MGY3NDoK KyAgICAgICAgLyogcGNtcGVxdyAqLworICAgICAgICBjYXNlIDB4NjYwZjc1 OgorICAgICAgICAvKiBwY21wZXFsICovCisgICAgICAgIGNhc2UgMHg2NjBm NzY6CisgICAgICAgIC8qIGhhZGRwZCAqLworICAgICAgICBjYXNlIDB4NjYw ZjdjOgorICAgICAgICAvKiBoYWRkcHMgKi8KKyAgICAgICAgY2FzZSAweGYy MGY3YzoKKyAgICAgICAgLyogaHN1YnBkICovCisgICAgICAgIGNhc2UgMHg2 NjBmN2Q6CisgICAgICAgIC8qIGhzdWJwcyAqLworICAgICAgICBjYXNlIDB4 ZjIwZjdkOgorICAgICAgICAvKiBtb3ZxICovCisgICAgICAgIGNhc2UgMHhm MzBmN2U6CisgICAgICAgIC8qIGNtcHBzICovCisgICAgICAgIGNhc2UgMHgw ZmMyOgorICAgICAgICAvKiBjbXBwZCAqLworICAgICAgICBjYXNlIDB4NjYw ZmMyOgorICAgICAgICAvKiBjbXBzZCAqLworICAgICAgICBjYXNlIDB4ZjIw ZmMyOgorICAgICAgICAvKiBjbXBzcyAqLworICAgICAgICBjYXNlIDB4ZjMw ZmMyOgorICAgICAgICAvKiBwaW5zcncgKi8KKyAgICAgICAgY2FzZSAweDY2 MGZjNDoKKyAgICAgICAgLyogc2h1ZnBzICovCisgICAgICAgIGNhc2UgMHgw ZmM2OgorICAgICAgICAvKiBzaHVmcGQgKi8KKyAgICAgICAgY2FzZSAweDY2 MGZjNjoKKyAgICAgICAgLyogYWRkc3VicGQgKi8KKyAgICAgICAgY2FzZSAw eDY2MGZkMDoKKyAgICAgICAgLyogYWRkc3VicHMgKi8KKyAgICAgICAgY2Fz ZSAweGYyMGZkMDoKKyAgICAgICAgLyogcHNybHcgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGZkMToKKyAgICAgICAgLyogcHNybGQgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGZkMjoKKyAgICAgICAgLyogcHNybHEgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGZkMzoKKyAgICAgICAgLyogcGFkZHEgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGZkNDoKKyAgICAgICAgLyogcG11bGx3ICovCisgICAgICAgIGNh c2UgMHg2NjBmZDU6CisgICAgICAgIC8qIG1vdnEyZHEgKi8KKyAgICAgICAg Y2FzZSAweGYzMGZkNjoKKyAgICAgICAgLyogcHN1YnVzYiAqLworICAgICAg ICBjYXNlIDB4NjYwZmQ4OgorICAgICAgICAvKiBwc3VidXN3ICovCisgICAg ICAgIGNhc2UgMHg2NjBmZDk6CisgICAgICAgIC8qIHBtaW51YiAqLworICAg ICAgICBjYXNlIDB4NjYwZmRhOgorICAgICAgICAvKiBwYW5kICovCisgICAg ICAgIGNhc2UgMHg2NjBmZGI6CisgICAgICAgIC8qIHBhZGR1c2IgKi8KKyAg ICAgICAgY2FzZSAweDY2MGZkYzoKKyAgICAgICAgLyogcGFkZHVzdyAqLwor ICAgICAgICBjYXNlIDB4NjYwZmRkOgorICAgICAgICAvKiBwbWF4dWIgKi8K KyAgICAgICAgY2FzZSAweDY2MGZkZToKKyAgICAgICAgLyogcGFuZG4gKi8K KyAgICAgICAgY2FzZSAweDY2MGZkZjoKKyAgICAgICAgLyogcGF2Z2IgKi8K KyAgICAgICAgY2FzZSAweDY2MGZlMDoKKyAgICAgICAgLyogcHNyYXcgKi8K KyAgICAgICAgY2FzZSAweDY2MGZlMToKKyAgICAgICAgLyogcHNyYWQgKi8K KyAgICAgICAgY2FzZSAweDY2MGZlMjoKKyAgICAgICAgLyogcGF2Z3cgKi8K KyAgICAgICAgY2FzZSAweDY2MGZlMzoKKyAgICAgICAgLyogcG11bGh1dyAq LworICAgICAgICBjYXNlIDB4NjYwZmU0OgorICAgICAgICAvKiBwbXVsaHcg Ki8KKyAgICAgICAgY2FzZSAweDY2MGZlNToKKyAgICAgICAgLyogY3Z0dHBk MmRxICovCisgICAgICAgIGNhc2UgMHg2NjBmZTY6CisgICAgICAgIC8qIGN2 dHBkMmRxICovCisgICAgICAgIGNhc2UgMHhmMjBmZTY6CisgICAgICAgIC8q IGN2dGRxMnBkICovCisgICAgICAgIGNhc2UgMHhmMzBmZTY6CisgICAgICAg IC8qIHBzdWJzYiAqLworICAgICAgICBjYXNlIDB4NjYwZmU4OgorICAgICAg ICAvKiBwc3Vic3cgKi8KKyAgICAgICAgY2FzZSAweDY2MGZlOToKKyAgICAg ICAgLyogcG1pbnN3ICovCisgICAgICAgIGNhc2UgMHg2NjBmZWE6CisgICAg ICAgIC8qIHBvciAqLworICAgICAgICBjYXNlIDB4NjYwZmViOgorICAgICAg ICAvKiBwYWRkc2IgKi8KKyAgICAgICAgY2FzZSAweDY2MGZlYzoKKyAgICAg ICAgLyogcGFkZHN3ICovCisgICAgICAgIGNhc2UgMHg2NjBmZWQ6CisgICAg ICAgIC8qIHBtYXhzdyAqLworICAgICAgICBjYXNlIDB4NjYwZmVlOgorICAg ICAgICAvKiBweG9yICovCisgICAgICAgIGNhc2UgMHg2NjBmZWY6CisgICAg ICAgIC8qIGxkZHF1ICovCisgICAgICAgIGNhc2UgMHg2NjBmZjA6CisgICAg ICAgIC8qIHBzbGx3ICovCisgICAgICAgIGNhc2UgMHg2NjBmZjE6CisgICAg ICAgIC8qIHBzbGxkICovCisgICAgICAgIGNhc2UgMHg2NjBmZjI6CisgICAg ICAgIC8qIHBzbGxxICovCisgICAgICAgIGNhc2UgMHg2NjBmZjM6CisgICAg ICAgIC8qIHBtdWx1ZHEgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmNDoKKyAg ICAgICAgLyogcG1hZGR3ZCAqLworICAgICAgICBjYXNlIDB4NjYwZmY1Ogor ICAgICAgICAvKiBwc2FkYncgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmNjoK KyAgICAgICAgLyogcHN1YmIgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmODoK KyAgICAgICAgLyogcHN1YncgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmOToK KyAgICAgICAgLyogcHN1YmwgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmYToK KyAgICAgICAgLyogcHN1YnEgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmYjoK KyAgICAgICAgLyogcGFkZGIgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmYzoK KyAgICAgICAgLyogcGFkZHcgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmZDoK KyAgICAgICAgLyogcGFkZGwgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmZToK KyAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCZpcikpCisJICAg IHJldHVybiAtMTsKKyAgICAgICAgICBpci5yZWcgfD0gcmV4X3I7CisgICAg ICAgICAgaWYgKCFpMzg2X3NzZV9yZWdudW1fcCAoZ2RiYXJjaCwgSTM4N19Y TU0wX1JFR05VTSAodGRlcCkgKyBpci5yZWcpKQorICAgICAgICAgICAgZ290 byBub19zdXBwb3J0OworICAgICAgICAgIHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAoaXIucmVnY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKSArIGlyLnJlZyk7 CisgICAgICAgICAgaWYgKChvcGNvZGUgJiAweGZmZmZmZmZjKSA9PSAweDY2 MGYzYTYwKQorICAgICAgICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNUX0FE RF9SRUcgKFg4Nl9SRUNPUkRfRUZMQUdTX1JFR05VTSk7CisgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgLyogbW92dXBzICovCisgICAgICAgIGNhc2Ug MHgwZjExOgorICAgICAgICAvKiBtb3Z1cGQgKi8KKyAgICAgICAgY2FzZSAw eDY2MGYxMToKKyAgICAgICAgLyogbW92c3MgKi8KKyAgICAgICAgY2FzZSAw eGYzMGYxMToKKyAgICAgICAgLyogbW92c2QgKi8KKyAgICAgICAgY2FzZSAw eGYyMGYxMToKKyAgICAgICAgLyogbW92bHBzICovCisgICAgICAgIGNhc2Ug MHgwZjEzOgorICAgICAgICAvKiBtb3ZscGQgKi8KKyAgICAgICAgY2FzZSAw eDY2MGYxMzoKKyAgICAgICAgLyogbW92aHBzICovCisgICAgICAgIGNhc2Ug MHgwZjE3OgorICAgICAgICAvKiBtb3ZocGQgKi8KKyAgICAgICAgY2FzZSAw eDY2MGYxNzoKKyAgICAgICAgLyogbW92YXBzICovCisgICAgICAgIGNhc2Ug MHgwZjI5OgorICAgICAgICAvKiBtb3ZhcGQgKi8KKyAgICAgICAgY2FzZSAw eDY2MGYyOToKKyAgICAgICAgLyogcGV4dHJiICovCisgICAgICAgIGNhc2Ug MHg2NjBmM2ExNDoKKyAgICAgICAgLyogcGV4dHJ3ICovCisgICAgICAgIGNh c2UgMHg2NjBmM2ExNToKKyAgICAgICAgLyogcGV4dHJkIHBleHRycSAqLwor ICAgICAgICBjYXNlIDB4NjYwZjNhMTY6CisgICAgICAgIC8qIGV4dHJhY3Rw cyAqLworICAgICAgICBjYXNlIDB4NjYwZjNhMTc6CisgICAgICAgIC8qIG1v dmRxYSAqLworICAgICAgICBjYXNlIDB4NjYwZjdmOgorICAgICAgICAvKiBt b3ZkcXUgKi8KKyAgICAgICAgY2FzZSAweGYzMGY3ZjoKKyAgICAgICAgICBp ZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCZpcikpCisJICAgIHJldHVybiAtMTsK KyAgICAgICAgICBpZiAoaXIubW9kID09IDMpCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gMHgwZjEzIHx8IG9wY29kZSA9 PSAweDY2MGYxMworICAgICAgICAgICAgICAgICAgfHwgb3Bjb2RlID09IDB4 MGYxNyB8fCBvcGNvZGUgPT0gMHg2NjBmMTcpCisgICAgICAgICAgICAgICAg Z290byBub19zdXBwb3J0OworICAgICAgICAgICAgICBpci5ybSB8PSBpci5y ZXhfYjsKKyAgICAgICAgICAgICAgaWYgKCFpMzg2X3NzZV9yZWdudW1fcCAo Z2RiYXJjaCwgSTM4N19YTU0wX1JFR05VTSAodGRlcCkgKyBpci5ybSkpCisg ICAgICAgICAgICAgICAgZ290byBub19zdXBwb3J0OworICAgICAgICAgICAg ICByZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkzODdfWE1N MF9SRUdOVU0gKHRkZXApICsgaXIucm0pOworICAgICAgICAgICAgfQorICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3dp dGNoIChvcGNvZGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgY2FzZSAweDY2MGYzYTE0OgorICAgICAgICAgICAgICAgICAgICBp ci5vdCA9IE9UX0JZVEU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICAgY2FzZSAweDY2MGYzYTE1OgorICAgICAgICAg ICAgICAgICAgICBpci5vdCA9IE9UX1dPUkQ7CisgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSAweDY2MGYzYTE2 OgorICAgICAgICAgICAgICAgICAgICBpci5vdCA9IE9UX0xPTkc7CisgICAg ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2Fz ZSAweDY2MGYzYTE3OgorICAgICAgICAgICAgICAgICAgICBpci5vdCA9IE9U X1FVQUQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgaXIub3Qg PSBPVF9EUVVBRDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRf bGVhX21vZHJtICgmaXIpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICAv KiBtb3ZudHBzICovCisgICAgICAgIGNhc2UgMHgwZjJiOgorICAgICAgICAv KiBtb3ZudHBkICovCisgICAgICAgIGNhc2UgMHg2NjBmMmI6CisgICAgICAg IC8qIG1vdm50cSAqLworICAgICAgICBjYXNlIDB4MGZlNzoKKyAgICAgICAg LyogbW92bnRkcSAqLworICAgICAgICBjYXNlIDB4NjYwZmU3OgorICAgICAg ICAgIGlmIChpci5tb2QgPT0gMykKKyAgICAgICAgICAgIGdvdG8gbm9fc3Vw cG9ydDsKKyAgICAgICAgICBpZiAob3Bjb2RlID09IDB4MGZlNykKKyAgICAg ICAgICAgIGlyLm90ID0gT1RfUVVBRDsKKyAgICAgICAgICBlbHNlCisgICAg ICAgICAgICBpci5vdCA9IE9UX0RRVUFEOworICAgICAgICAgIGlmIChpMzg2 X3JlY29yZF9sZWFfbW9kcm0gKCZpcikpCisgICAgICAgICAgICByZXR1cm4g LTE7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogY3Z0dHNzMnNp ICovCisgICAgICAgIGNhc2UgMHhmMzBmMmM6CisgICAgICAgIC8qIGN2dHRz ZDJzaSAqLworICAgICAgICBjYXNlIDB4ZjIwZjJjOgorICAgICAgICAvKiBj dnRzczJzaSAqLworICAgICAgICBjYXNlIDB4ZjMwZjJkOgorICAgICAgICAv KiBjdnRzZDJzaSAqLworICAgICAgICBjYXNlIDB4ZjIwZjJkOgorICAgICAg ICAvKiBjcmMzMiAqLworICAgICAgICBjYXNlIDB4ZjIwZjM4ZjA6CisgICAg ICAgIC8qIGNyYzMyICovCisgICAgICAgIGNhc2UgMHhmMjBmMzhmMToKKyAg ICAgICAgLyogbW92bXNrcHMgKi8KKyAgICAgICAgY2FzZSAweDBmNTA6Cisg ICAgICAgIC8qIG1vdm1za3BkICovCisgICAgICAgIGNhc2UgMHg2NjBmNTA6 CisgICAgICAgIC8qIHBleHRydyAqLworICAgICAgICBjYXNlIDB4MGZjNToK KyAgICAgICAgLyogcGV4dHJ3ICovCisgICAgICAgIGNhc2UgMHg2NjBmYzU6 CisgICAgICAgIC8qIHBtb3Ztc2tiICovCisgICAgICAgIGNhc2UgMHgwZmQ3 OgorICAgICAgICAvKiBwbW92bXNrYiAqLworICAgICAgICBjYXNlIDB4NjYw ZmQ3OgorICAgICAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVH IChpci5yZWcgfCByZXhfcik7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgLyogcHNodWZiICovCisgICAgICAgIGNhc2UgMHgwZjM4MDA6CisgICAg ICAgIC8qIHBoYWRkdyAqLworICAgICAgICBjYXNlIDB4MGYzODAxOgorICAg ICAgICAvKiBwaGFkZGQgKi8KKyAgICAgICAgY2FzZSAweDBmMzgwMjoKKyAg ICAgICAgLyogcGhhZGRzdyAqLworICAgICAgICBjYXNlIDB4MGYzODAzOgor ICAgICAgICAvKiBwbWFkZHVic3cgKi8KKyAgICAgICAgY2FzZSAweDBmMzgw NDoKKyAgICAgICAgLyogcGhzdWJ3ICovCisgICAgICAgIGNhc2UgMHgwZjM4 MDU6CisgICAgICAgIC8qIHBoc3ViZCAqLworICAgICAgICBjYXNlIDB4MGYz ODA2OgorICAgICAgICAvKiBwaGFkZHN3ICovCisgICAgICAgIGNhc2UgMHgw ZjM4MDc6CisgICAgICAgIC8qIHBzaWduYiAqLworICAgICAgICBjYXNlIDB4 MGYzODA4OgorICAgICAgICAvKiBwc2lnbncgKi8KKyAgICAgICAgY2FzZSAw eDBmMzgwOToKKyAgICAgICAgLyogcHNpZ25kICovCisgICAgICAgIGNhc2Ug MHgwZjM4MGE6CisgICAgICAgIC8qIHBtdWxocnN3ICovCisgICAgICAgIGNh c2UgMHgwZjM4MGI6CisgICAgICAgIC8qIHBhYnNiICovCisgICAgICAgIGNh c2UgMHgwZjM4MWM6CisgICAgICAgIC8qIHBhYnN3ICovCisgICAgICAgIGNh c2UgMHgwZjM4MWQ6CisgICAgICAgIC8qIHBhYnNkICovCisgICAgICAgIGNh c2UgMHgwZjM4MWU6CisgICAgICAgIC8qIHBhY2t1c2R3ICovCisgICAgICAg IGNhc2UgMHgwZjM4MmI6CisgICAgICAgIC8qIHBtb3Z6eGJ3ICovCisgICAg ICAgIGNhc2UgMHgwZjM4MzA6CisgICAgICAgIC8qIHBtb3Z6eGJkICovCisg ICAgICAgIGNhc2UgMHgwZjM4MzE6CisgICAgICAgIC8qIHBtb3Z6eGJxICov CisgICAgICAgIGNhc2UgMHgwZjM4MzI6CisgICAgICAgIC8qIHBtb3Z6eHdk ICovCisgICAgICAgIGNhc2UgMHgwZjM4MzM6CisgICAgICAgIC8qIHBtb3Z6 eHdxICovCisgICAgICAgIGNhc2UgMHgwZjM4MzQ6CisgICAgICAgIC8qIHBt b3Z6eGRxICovCisgICAgICAgIGNhc2UgMHgwZjM4MzU6CisgICAgICAgIC8q IHBjbXBndHEgKi8KKyAgICAgICAgY2FzZSAweDBmMzgzNzoKKyAgICAgICAg LyogcG1pbnNiICovCisgICAgICAgIGNhc2UgMHgwZjM4Mzg6CisgICAgICAg IC8qIHBtaW5zZCAqLworICAgICAgICBjYXNlIDB4MGYzODM5OgorICAgICAg ICAvKiBwbWludXcgKi8KKyAgICAgICAgY2FzZSAweDBmMzgzYToKKyAgICAg ICAgLyogcG1pbnVkICovCisgICAgICAgIGNhc2UgMHgwZjM4M2I6CisgICAg ICAgIC8qIHBtYXhzYiAqLworICAgICAgICBjYXNlIDB4MGYzODNjOgorICAg ICAgICAvKiBwbWF4c2QgKi8KKyAgICAgICAgY2FzZSAweDBmMzgzZDoKKyAg ICAgICAgLyogcG1heHV3ICovCisgICAgICAgIGNhc2UgMHgwZjM4M2U6Cisg ICAgICAgIC8qIHBtYXh1ZCAqLworICAgICAgICBjYXNlIDB4MGYzODNmOgor ICAgICAgICAvKiBwbXVsbGQgKi8KKyAgICAgICAgY2FzZSAweDBmMzg0MDoK KyAgICAgICAgLyogcGhtaW5wb3N1dyAqLworICAgICAgICBjYXNlIDB4MGYz ODQxOgorICAgICAgICAvKiBwYWxpZ25yICovCisgICAgICAgIGNhc2UgMHgw ZjNhMGY6CisgICAgICAgIC8qIHB1bnBja2xidyAqLworICAgICAgICBjYXNl IDB4MGY2MDoKKyAgICAgICAgLyogcHVucGNrbHdkICovCisgICAgICAgIGNh c2UgMHgwZjYxOgorICAgICAgICAvKiBwdW5wY2tsZHEgKi8KKyAgICAgICAg Y2FzZSAweDBmNjI6CisgICAgICAgIC8qIHBhY2tzc3diICovCisgICAgICAg IGNhc2UgMHgwZjYzOgorICAgICAgICAvKiBwY21wZ3RiICovCisgICAgICAg IGNhc2UgMHgwZjY0OgorICAgICAgICAvKiBwY21wZ3R3ICovCisgICAgICAg IGNhc2UgMHgwZjY1OgorICAgICAgICAvKiBwY21wZ3RsICovCisgICAgICAg IGNhc2UgMHgwZjY2OgorICAgICAgICAvKiBwYWNrdXN3YiAqLworICAgICAg ICBjYXNlIDB4MGY2NzoKKyAgICAgICAgLyogcHVucGNraGJ3ICovCisgICAg ICAgIGNhc2UgMHgwZjY4OgorICAgICAgICAvKiBwdW5wY2tod2QgKi8KKyAg ICAgICAgY2FzZSAweDBmNjk6CisgICAgICAgIC8qIHB1bnBja2hkcSAqLwor ICAgICAgICBjYXNlIDB4MGY2YToKKyAgICAgICAgLyogcGFja3NzZHcgKi8K KyAgICAgICAgY2FzZSAweDBmNmI6CisgICAgICAgIC8qIG1vdmQgKi8KKyAg ICAgICAgY2FzZSAweDBmNmU6CisgICAgICAgIC8qIG1vdnEgKi8KKyAgICAg ICAgY2FzZSAweDBmNmY6CisgICAgICAgIC8qIHBzaHVmdyAqLworICAgICAg ICBjYXNlIDB4MGY3MDoKKyAgICAgICAgLyogcGNtcGVxYiAqLworICAgICAg ICBjYXNlIDB4MGY3NDoKKyAgICAgICAgLyogcGNtcGVxdyAqLworICAgICAg ICBjYXNlIDB4MGY3NToKKyAgICAgICAgLyogcGNtcGVxbCAqLworICAgICAg ICBjYXNlIDB4MGY3NjoKKyAgICAgICAgLyogcGluc3J3ICovCisgICAgICAg IGNhc2UgMHgwZmM0OgorICAgICAgICAvKiBwc3JsdyAqLworICAgICAgICBj YXNlIDB4MGZkMToKKyAgICAgICAgLyogcHNybGQgKi8KKyAgICAgICAgY2Fz ZSAweDBmZDI6CisgICAgICAgIC8qIHBzcmxxICovCisgICAgICAgIGNhc2Ug MHgwZmQzOgorICAgICAgICAvKiBwYWRkcSAqLworICAgICAgICBjYXNlIDB4 MGZkNDoKKyAgICAgICAgLyogcG11bGx3ICovCisgICAgICAgIGNhc2UgMHgw ZmQ1OgorICAgICAgICAvKiBtb3ZkcTJxICovCisgICAgICAgIGNhc2UgMHhm MjBmZDY6CisgICAgICAgIC8qIHBzdWJ1c2IgKi8KKyAgICAgICAgY2FzZSAw eDBmZDg6CisgICAgICAgIC8qIHBzdWJ1c3cgKi8KKyAgICAgICAgY2FzZSAw eDBmZDk6CisgICAgICAgIC8qIHBtaW51YiAqLworICAgICAgICBjYXNlIDB4 MGZkYToKKyAgICAgICAgLyogcGFuZCAqLworICAgICAgICBjYXNlIDB4MGZk YjoKKyAgICAgICAgLyogcGFkZHVzYiAqLworICAgICAgICBjYXNlIDB4MGZk YzoKKyAgICAgICAgLyogcGFkZHVzdyAqLworICAgICAgICBjYXNlIDB4MGZk ZDoKKyAgICAgICAgLyogcG1heHViICovCisgICAgICAgIGNhc2UgMHgwZmRl OgorICAgICAgICAvKiBwYW5kbiAqLworICAgICAgICBjYXNlIDB4MGZkZjoK KyAgICAgICAgLyogcGF2Z2IgKi8KKyAgICAgICAgY2FzZSAweDBmZTA6Cisg ICAgICAgIC8qIHBzcmF3ICovCisgICAgICAgIGNhc2UgMHgwZmUxOgorICAg ICAgICAvKiBwc3JhZCAqLworICAgICAgICBjYXNlIDB4MGZlMjoKKyAgICAg ICAgLyogcGF2Z3cgKi8KKyAgICAgICAgY2FzZSAweDBmZTM6CisgICAgICAg IC8qIHBtdWxodXcgKi8KKyAgICAgICAgY2FzZSAweDBmZTQ6CisgICAgICAg IC8qIHBtdWxodyAqLworICAgICAgICBjYXNlIDB4MGZlNToKKyAgICAgICAg LyogcHN1YnNiICovCisgICAgICAgIGNhc2UgMHgwZmU4OgorICAgICAgICAv KiBwc3Vic3cgKi8KKyAgICAgICAgY2FzZSAweDBmZTk6CisgICAgICAgIC8q IHBtaW5zdyAqLworICAgICAgICBjYXNlIDB4MGZlYToKKyAgICAgICAgLyog cG9yICovCisgICAgICAgIGNhc2UgMHgwZmViOgorICAgICAgICAvKiBwYWRk c2IgKi8KKyAgICAgICAgY2FzZSAweDBmZWM6CisgICAgICAgIC8qIHBhZGRz dyAqLworICAgICAgICBjYXNlIDB4MGZlZDoKKyAgICAgICAgLyogcG1heHN3 ICovCisgICAgICAgIGNhc2UgMHgwZmVlOgorICAgICAgICAvKiBweG9yICov CisgICAgICAgIGNhc2UgMHgwZmVmOgorICAgICAgICAvKiBwc2xsdyAqLwor ICAgICAgICBjYXNlIDB4MGZmMToKKyAgICAgICAgLyogcHNsbGQgKi8KKyAg ICAgICAgY2FzZSAweDBmZjI6CisgICAgICAgIC8qIHBzbGxxICovCisgICAg ICAgIGNhc2UgMHgwZmYzOgorICAgICAgICAvKiBwbXVsdWRxICovCisgICAg ICAgIGNhc2UgMHgwZmY0OgorICAgICAgICAvKiBwbWFkZHdkICovCisgICAg ICAgIGNhc2UgMHgwZmY1OgorICAgICAgICAvKiBwc2FkYncgKi8KKyAgICAg ICAgY2FzZSAweDBmZjY6CisgICAgICAgIC8qIHBzdWJiICovCisgICAgICAg IGNhc2UgMHgwZmY4OgorICAgICAgICAvKiBwc3VidyAqLworICAgICAgICBj YXNlIDB4MGZmOToKKyAgICAgICAgLyogcHN1YmwgKi8KKyAgICAgICAgY2Fz ZSAweDBmZmE6CisgICAgICAgIC8qIHBzdWJxICovCisgICAgICAgIGNhc2Ug MHgwZmZiOgorICAgICAgICAvKiBwYWRkYiAqLworICAgICAgICBjYXNlIDB4 MGZmYzoKKyAgICAgICAgLyogcGFkZHcgKi8KKyAgICAgICAgY2FzZSAweDBm ZmQ6CisgICAgICAgIC8qIHBhZGRsICovCisgICAgICAgIGNhc2UgMHgwZmZl OgorICAgICAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoJmlyKSkKKwkg ICAgcmV0dXJuIC0xOworICAgICAgICAgIGlmICghaTM4Nl9tbXhfcmVnbnVt X3AgKGdkYmFyY2gsIEkzODdfTU0wX1JFR05VTSAodGRlcCkgKyBpci5yZWcp KQorICAgICAgICAgICAgZ290byBub19zdXBwb3J0OworICAgICAgICAgIHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoaXIucmVnY2FjaGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMzg3X01NMF9SRUdOVU0g KHRkZXApICsgaXIucmVnKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAg ICAvKiBwc2xsdyAqLworICAgICAgICBjYXNlIDB4MGY3MToKKyAgICAgICAg LyogcHNsbGQgKi8KKyAgICAgICAgY2FzZSAweDBmNzI6CisgICAgICAgIC8q IHBzbGxxICovCisgICAgICAgIGNhc2UgMHgwZjczOgorICAgICAgICAgIGlm IChpMzg2X3JlY29yZF9tb2RybSAoJmlyKSkKKwkgICAgcmV0dXJuIC0xOwor ICAgICAgICAgIGlmICghaTM4Nl9tbXhfcmVnbnVtX3AgKGdkYmFyY2gsIEkz ODdfTU0wX1JFR05VTSAodGRlcCkgKyBpci5ybSkpCisgICAgICAgICAgICBn b3RvIG5vX3N1cHBvcnQ7CisgICAgICAgICAgcmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChpci5yZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEkzODdfTU0wX1JFR05VTSAodGRlcCkgKyBpci5ybSk7 CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogcHNsbHcgKi8KKyAg ICAgICAgY2FzZSAweDY2MGY3MToKKyAgICAgICAgLyogcHNsbGQgKi8KKyAg ICAgICAgY2FzZSAweDY2MGY3MjoKKyAgICAgICAgLyogcHNsbHEgKi8KKyAg ICAgICAgY2FzZSAweDY2MGY3MzoKKyAgICAgICAgICBpZiAoaTM4Nl9yZWNv cmRfbW9kcm0gKCZpcikpCisJICAgIHJldHVybiAtMTsKKyAgICAgICAgICBp ci5ybSB8PSBpci5yZXhfYjsKKyAgICAgICAgICBpZiAoIWkzODZfc3NlX3Jl Z251bV9wIChnZGJhcmNoLCBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKSArIGly LnJtKSkKKyAgICAgICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgICAg ICByZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTM4N19YTU0wX1JF R05VTSAodGRlcCkgKyBpci5ybSk7CisgICAgICAgICAgYnJlYWs7CisKKyAg ICAgICAgLyogbW92ZCAqLworICAgICAgICBjYXNlIDB4MGY3ZToKKyAgICAg ICAgLyogbW92ZCAqLworICAgICAgICBjYXNlIDB4NjYwZjdlOgorICAgICAg ICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoJmlyKSkKKwkgICAgcmV0dXJu IC0xOworICAgICAgICAgIGlmIChpci5tb2QgPT0gMykKKyAgICAgICAgICAg IEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChpci5ybSB8IGlyLnJl eF9iKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgIGlmIChpci5kZmxhZyA9PSAyKQorICAgICAgICAgICAgICAgIGly Lm90ID0gT1RfUVVBRDsKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgICAgIGlyLm90ID0gT1RfTE9ORzsKKyAgICAgICAgICAgICAgaWYgKGkz ODZfcmVjb3JkX2xlYV9tb2RybSAoJmlyKSkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgLyogbW92cSAqLworICAgICAgICBjYXNlIDB4MGY3ZjoKKyAg ICAgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCZpcikpCisJICAgIHJl dHVybiAtMTsKKyAgICAgICAgICBpZiAoaXIubW9kID09IDMpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGlmICghaTM4Nl9tbXhfcmVnbnVtX3Ag KGdkYmFyY2gsIEkzODdfTU0wX1JFR05VTSAodGRlcCkgKyBpci5ybSkpCisg ICAgICAgICAgICAgICAgZ290byBub19zdXBwb3J0OworICAgICAgICAgICAg ICByZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkzODdfTU0w X1JFR05VTSAodGRlcCkgKyBpci5ybSk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpci5v dCA9IE9UX1FVQUQ7CisgICAgICAgICAgICAgIGlmIChpMzg2X3JlY29yZF9s ZWFfbW9kcm0gKCZpcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwor ICAgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8q IHBvcGNudCAqLworICAgICAgICBjYXNlIDB4ZjMwZmI4OgorICAgICAgICAg IGlmIChpMzg2X3JlY29yZF9tb2RybSAoJmlyKSkKKwkgICAgcmV0dXJuIC0x OworICAgICAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChp ci5yZWcpOworICAgICAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERf UkVHIChYODZfUkVDT1JEX0VGTEFHU19SRUdOVU0pOworICAgICAgICAgIGJy ZWFrOworCisgICAgICAgIC8qIG1vdnEgKi8KKyAgICAgICAgY2FzZSAweDY2 MGZkNjoKKyAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCZpcikp CisJICAgIHJldHVybiAtMTsKKyAgICAgICAgICBpZiAoaXIubW9kID09IDMp CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlyLnJtIHw9IGlyLnJl eF9iOworICAgICAgICAgICAgICBpZiAoIWkzODZfc3NlX3JlZ251bV9wIChn ZGJhcmNoLCBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKSArIGlyLnJtKSkKKyAg ICAgICAgICAgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICAgICAgICAg IHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoaXIucmVnY2FjaGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTM4N19YTU0w X1JFR05VTSAodGRlcCkgKyBpci5ybSk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpci5v dCA9IE9UX1FVQUQ7CisgICAgICAgICAgICAgIGlmIChpMzg2X3JlY29yZF9s ZWFfbW9kcm0gKCZpcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwor ICAgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8q IHB0ZXN0ICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgxNzoKKyAgICAgICAg LyogdWNvbWlzcyAqLworICAgICAgICBjYXNlIDB4MGYyZToKKyAgICAgICAg LyogdWNvbWlzZCAqLworICAgICAgICBjYXNlIDB4NjYwZjJlOgorICAgICAg ICAvKiBjb21pc3MgKi8KKyAgICAgICAgY2FzZSAweDBmMmY6CisgICAgICAg IC8qIGNvbWlzZCAqLworICAgICAgICBjYXNlIDB4NjYwZjJmOgorICAgICAg ICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JE X0VGTEFHU19SRUdOVU0pOworICAgICAgICAgIGJyZWFrOworCisgICAgICAg IC8qIG1hc2ttb3ZxICovCisgICAgICAgIGNhc2UgMHgwZmY3OgorICAgICAg ICAgIHJlZ2NhY2hlX3Jhd19yZWFkX3Vuc2lnbmVkIChpci5yZWdjYWNoZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXIucmVn bWFwW1g4Nl9SRUNPUkRfUkVESV9SRUdOVU1dLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmdG1wdWxvbmdlc3QpOworICAgICAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHVsb25nZXN0 LCA2NCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgLyogbWFza21vdmRxdSAqLworICAgICAgICBjYXNl IDB4NjYwZmY3OgorICAgICAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkX3Vuc2ln bmVkIChpci5yZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXIucmVnbWFwW1g4Nl9SRUNPUkRfUkVESV9SRUdOVU1d LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG1w dWxvbmdlc3QpOworICAgICAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0gKHRtcHVsb25nZXN0LCAxMjgpKQorICAgICAgICAgICAgcmV0dXJu IC0xOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgZ290byBub19zdXBwb3J0OworICAgICAgICAgIGJyZWFrOwor ICAgICAgICB9CisgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAg ICBpZiAob3Bjb2RlID4gMHhmZikKLQlpci5hZGRyIC09IDI7Ci0gICAgICBl bHNlCi0JaXIuYWRkciAtPSAxOwogICAgICAgZ290byBub19zdXBwb3J0Owog ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTcxOSw4ICs2OTAyLDkgQEAgaTM4 Nl9wcm9jZXNzX3JlY29yZCAoc3RydWN0IGdkYmFyY2ggKmdkYgogCiAgbm9f c3VwcG9ydDoKICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVj b3JkIGRvZXNuJ3Qgc3VwcG9ydCBpbnN0cnVjdGlvbiAweCUwMnggIgotCQkg ICAgICAgImF0IGFkZHJlc3MgJXMuXG4iKSwKLQkJICAgICAodW5zaWduZWQg aW50KSAob3Bjb2RlKSwgcGFkZHJlc3MgKGdkYmFyY2gsIGlyLmFkZHIpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgImF0IGFkZHJlc3MgJXMuXG4iKSwK KyAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpIChvcGNvZGUp LAorICAgICAgICAgICAgICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGly Lm9yaWdfYWRkcikpOwogICByZXR1cm4gLTE7CiB9CiAK --001485ea8b4c31fa01047a8af940--