From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17523 invoked by alias); 7 Dec 2009 15:00:47 -0000 Received: (qmail 17485 invoked by uid 22791); 7 Dec 2009 15:00:39 -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-pw0-f49.google.com (HELO mail-pw0-f49.google.com) (209.85.160.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 07 Dec 2009 15:00:30 +0000 Received: by pwj12 with SMTP id 12so690011pwj.8 for ; Mon, 07 Dec 2009 07:00:28 -0800 (PST) MIME-Version: 1.0 Received: by 10.143.20.10 with SMTP id x10mr752972wfi.224.1260198028422; Mon, 07 Dec 2009 07:00:28 -0800 (PST) From: Hui Zhu Date: Mon, 07 Dec 2009 15:00:00 -0000 Message-ID: Subject: [RFA] Prec x86 MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 support To: gdb-patches ml Cc: Michael Snyder , Mark Kettenis Content-Type: multipart/mixed; boundary=00504502cbe9d4b12c047a24b72a 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/msg00074.txt.bz2 --00504502cbe9d4b12c047a24b72a Content-Type: text/plain; charset=ISO-8859-1 Content-length: 33065 Hi guys, This patch make prec support x86 MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4. Please help me review it. Thanks, Hui 2009-12-07 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 | 1217 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1201 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 */ @@ -3217,6 +3218,7 @@ i386_process_record (struct gdbarch *gdb int rex = 0; uint8_t rex_w = -1; uint8_t rex_r = 0; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); memset (&ir, 0, sizeof (struct i386_record_s)); ir.regcache = regcache; @@ -3226,7 +3228,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) @@ -3344,7 +3346,7 @@ reswitch: return -1; } ir.addr++; - opcode = (uint16_t) tmpu8 | 0x0f00; + opcode = (uint32_t) tmpu8 | 0x0f00; goto reswitch; break; @@ -4868,7 +4870,7 @@ reswitch: } 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"), @@ -4876,7 +4878,7 @@ reswitch: 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; } @@ -4973,14 +4975,14 @@ reswitch: 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; } @@ -4998,14 +5000,14 @@ reswitch: 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; } @@ -5349,14 +5351,1196 @@ reswitch: 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; } @@ -5370,8 +6554,9 @@ reswitch: 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; } --00504502cbe9d4b12c047a24b72a 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_g2xdca3x0 Content-length: 44449 LS0tCiBpMzg2LXRkZXAuYyB8IDEyMTcgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZp bGUgY2hhbmdlZCwgMTIwMSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMo LSkKCi0tLSBhL2kzODYtdGRlcC5jCisrKyBiL2kzODYtdGRlcC5jCkBAIC0y ODQ4LDYgKzI4NDgsNyBAQCBlbnVtCiAgIE9UX1dPUkQsCiAgIE9UX0xPTkcs CiAgIE9UX1FVQUQsCisgIE9UX0RRVUFELAogfTsKIAogLyogaTM4NiBhcml0 aC9sb2dpYyBvcGVyYXRpb25zICovCkBAIC0zMjE3LDYgKzMyMTgsNyBAQCBp Mzg2X3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgIGlu dCByZXggPSAwOwogICB1aW50OF90IHJleF93ID0gLTE7CiAgIHVpbnQ4X3Qg cmV4X3IgPSAwOworICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2Ri YXJjaF90ZGVwIChnZGJhcmNoKTsKIAogICBtZW1zZXQgKCZpciwgMCwgc2l6 ZW9mIChzdHJ1Y3QgaTM4Nl9yZWNvcmRfcykpOwogICBpci5yZWdjYWNoZSA9 IHJlZ2NhY2hlOwpAQCAtMzIyNiw3ICszMjI4LDcgQEAgaTM4Nl9wcm9jZXNz X3JlY29yZCAoc3RydWN0IGdkYmFyY2ggKmdkYgogICBpci5kZmxhZyA9IDE7 CiAgIGlyLm92ZXJyaWRlID0gLTE7CiAgIGlyLnBvcGxfZXNwX2hhY2sgPSAw OwotICBpci5yZWdtYXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5yZWNv cmRfcmVnbWFwOworICBpci5yZWdtYXAgPSB0ZGVwLT5yZWNvcmRfcmVnbWFw OwogICBpci5nZGJhcmNoID0gZ2RiYXJjaDsKIAogICBpZiAocmVjb3JkX2Rl YnVnID4gMSkKQEAgLTMzNDQsNyArMzM0Niw3IEBAIHJlc3dpdGNoOgogCSAg cmV0dXJuIC0xOwogCX0KICAgICAgIGlyLmFkZHIrKzsKLSAgICAgIG9wY29k ZSA9ICh1aW50MTZfdCkgdG1wdTggfCAweDBmMDA7CisgICAgICBvcGNvZGUg PSAodWludDMyX3QpIHRtcHU4IHwgMHgwZjAwOwogICAgICAgZ290byByZXN3 aXRjaDsKICAgICAgIGJyZWFrOwogCkBAIC00ODY4LDcgKzQ4NzAsNyBAQCBy ZXN3aXRjaDoKIAkgIH0KIAlpci5hZGRyKys7CiAJaWYgKHRtcHU4ICE9IDB4 ODAKLQkgICAgfHwgZ2RiYXJjaF90ZGVwIChnZGJhcmNoKS0+aTM4Nl9pbnR4 ODBfcmVjb3JkID09IE5VTEwpCisJICAgIHx8IHRkZXAtPmkzODZfaW50eDgw X3JlY29yZCA9PSBOVUxMKQogCSAgewogCSAgICBwcmludGZfdW5maWx0ZXJl ZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKIAkJCQkg Imluc3RydWN0aW9uIGludCAweCUwMnguXG4iKSwKQEAgLTQ4NzYsNyArNDg3 OCw3IEBAIHJlc3dpdGNoOgogCSAgICBpci5hZGRyIC09IDI7CiAJICAgIGdv dG8gbm9fc3VwcG9ydDsKIAkgIH0KLQlyZXQgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpLT5pMzg2X2ludHg4MF9yZWNvcmQgKGlyLnJlZ2NhY2hlKTsKKwly ZXQgPSB0ZGVwLT5pMzg2X2ludHg4MF9yZWNvcmQgKGlyLnJlZ2NhY2hlKTsK IAlpZiAocmV0KQogCSAgcmV0dXJuIHJldDsKICAgICAgIH0KQEAgLTQ5NzMs MTQgKzQ5NzUsMTQgQEAgcmVzd2l0Y2g6CiAgICAgICAgICAgICBpci5hZGRy IC09IDI7CiAgICAgICAgICAgICBnb3RvIG5vX3N1cHBvcnQ7CiAgICAgICAg ICAgfQotCWlmIChnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2X3N5c2Vu dGVyX3JlY29yZCA9PSBOVUxMKQorCWlmICh0ZGVwLT5pMzg2X3N5c2VudGVy X3JlY29yZCA9PSBOVUxMKQogCSAgewogCSAgICBwcmludGZfdW5maWx0ZXJl ZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKIAkJCQkg Imluc3RydWN0aW9uIHN5c2VudGVyLlxuIikpOwogCSAgICBpci5hZGRyIC09 IDI7CiAJICAgIGdvdG8gbm9fc3VwcG9ydDsKIAkgIH0KLQlyZXQgPSBnZGJh cmNoX3RkZXAgKGdkYmFyY2gpLT5pMzg2X3N5c2VudGVyX3JlY29yZCAoaXIu cmVnY2FjaGUpOworCXJldCA9IHRkZXAtPmkzODZfc3lzZW50ZXJfcmVjb3Jk IChpci5yZWdjYWNoZSk7CiAJaWYgKHJldCkKIAkgIHJldHVybiByZXQ7CiAg ICAgICB9CkBAIC00OTk4LDE0ICs1MDAwLDE0IEBAIHJlc3dpdGNoOgogICAg IGNhc2UgMHgwZjA1OgogICAgICAgewogCWludCByZXQ7Ci0JaWYgKGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfc3lzY2FsbF9yZWNvcmQgPT0gTlVM TCkKKwlpZiAodGRlcC0+aTM4Nl9zeXNjYWxsX3JlY29yZCA9PSBOVUxMKQog CSAgewogCSAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNv cmQgZG9lc24ndCBzdXBwb3J0ICIKIAkJCQkgImluc3RydWN0aW9uIHN5c2Nh bGwuXG4iKSk7CiAJICAgIGlyLmFkZHIgLT0gMjsKIAkgICAgZ290byBub19z dXBwb3J0OwogCSAgfQotCXJldCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCkt PmkzODZfc3lzY2FsbF9yZWNvcmQgKGlyLnJlZ2NhY2hlKTsKKwlyZXQgPSB0 ZGVwLT5pMzg2X3N5c2NhbGxfcmVjb3JkIChpci5yZWdjYWNoZSk7CiAJaWYg KHJldCkKIAkgIHJldHVybiByZXQ7CiAgICAgICB9CkBAIC01MzQ5LDE0ICs1 MzUxLDExOTYgQEAgcmVzd2l0Y2g6CiAgICAgICBJMzg2X1JFQ09SRF9BUkNI X0xJU1RfQUREX1JFRyAoWDg2X1JFQ09SRF9FRkxBR1NfUkVHTlVNKTsKICAg ICAgIGJyZWFrOwogCi0gICAgICAvKiBNTVgvU1NFL1NTRTIvUE5JIHN1cHBv cnQgKi8KLSAgICAgIC8qIFhYWCAqLworICAgIC8qIE1NWCAzRE5vdyEgU1NF IFNTRTIgU1NFMyBTU1NFMyBTU0U0ICovCisgICAgLyogM0ROb3chIHByZWZl dGNoICovCisgICAgY2FzZSAweDBmMGQ6CisgICAgICBicmVhazsKKworICAg IC8qIDNETm93ISBmZW1tcyAqLworICAgIGNhc2UgMHgwZjBlOgorICAgIC8q IGVtbXMgKi8KKyAgICBjYXNlIDB4MGY3NzoKKyAgICAgIGlmIChpMzg2X2Zw Y19yZWdudW1fcCAoZ2RiYXJjaCwgSTM4N19GVEFHX1JFR05VTSh0ZGVwKSkp CisgICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIHJlY29yZF9hcmNo X2xpc3RfYWRkX3JlZyAoaXIucmVnY2FjaGUsIEkzODdfRlRBR19SRUdOVU0o dGRlcCkpOworICAgICAgYnJlYWs7CisKKyAgICAvKiAzRE5vdyEgZGF0YSAq LworICAgIGNhc2UgMHgwZjBmOgorICAgICAgaWYgKGkzODZfcmVjb3JkX21v ZHJtICgmaXIpKQorCXJldHVybiAtMTsKKyAgICAgIGlmICh0YXJnZXRfcmVh ZF9tZW1vcnkgKGlyLmFkZHIsICZ0bXB1OCwgMSkpCisgICAgICAgIHsKKyAg ICAgICAgICBpZiAocmVjb3JkX2RlYnVnKQorCSAgICBwcmludGZfdW5maWx0 ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHJlYWRpbmcgbWVtb3J5 IGF0ICIKKwkgICAgICAgICAgICAgICAgICAgICAgICAgImFkZHIgJXMgbGVu ID0gMS5cbiIpLAorCSAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJlc3Mg KGdkYmFyY2gsIGlyLmFkZHIpKTsKKyAgICAgICAgICByZXR1cm4gLTE7Cisg ICAgICAgIH0KKyAgICAgIGlyLmFkZHIrKzsKKyAgICAgIHN3aXRjaCAodG1w dTgpCisgICAgICAgIHsKKyAgICAgICAgLyogM0ROb3chIHBpMmZ3ICovCisg ICAgICAgIGNhc2UgMHgwYzoKKyAgICAgICAgLyogM0ROb3chIHBpMmZkICov CisgICAgICAgIGNhc2UgMHgwZDoKKyAgICAgICAgLyogM0ROb3chIHBmMml3 ICovCisgICAgICAgIGNhc2UgMHgxYzoKKyAgICAgICAgLyogM0ROb3chIHBm MmlkICovCisgICAgICAgIGNhc2UgMHgxZDoKKyAgICAgICAgLyogM0ROb3ch IHBmbmFjYyAqLworICAgICAgICBjYXNlIDB4OGE6CisgICAgICAgIC8qIDNE Tm93ISBwZnBuYWNjICovCisgICAgICAgIGNhc2UgMHg4ZToKKyAgICAgICAg LyogM0ROb3chIHBmY21wZ2UgKi8KKyAgICAgICAgY2FzZSAweDkwOgorICAg ICAgICAvKiAzRE5vdyEgcGZtaW4gKi8KKyAgICAgICAgY2FzZSAweDk0Ogor ICAgICAgICAvKiAzRE5vdyEgcGZyY3AgKi8KKyAgICAgICAgY2FzZSAweDk2 OgorICAgICAgICAvKiAzRE5vdyEgcGZyc3FydCAqLworICAgICAgICBjYXNl IDB4OTc6CisgICAgICAgIC8qIDNETm93ISBwZnN1YiAqLworICAgICAgICBj YXNlIDB4OWE6CisgICAgICAgIC8qIDNETm93ISBwZmFkZCAqLworICAgICAg ICBjYXNlIDB4OWU6CisgICAgICAgIC8qIDNETm93ISBwZmNtcGd0ICovCisg ICAgICAgIGNhc2UgMHhhMDoKKyAgICAgICAgLyogM0ROb3chIHBmbWF4ICov CisgICAgICAgIGNhc2UgMHhhNDoKKyAgICAgICAgLyogM0ROb3chIHBmcmNw aXQxICovCisgICAgICAgIGNhc2UgMHhhNjoKKyAgICAgICAgLyogM0ROb3ch IHBmcnNxaXQxICovCisgICAgICAgIGNhc2UgMHhhNzoKKyAgICAgICAgLyog M0ROb3chIHBmc3ViciAqLworICAgICAgICBjYXNlIDB4YWE6CisgICAgICAg IC8qIDNETm93ISBwZmFjYyAqLworICAgICAgICBjYXNlIDB4YWU6CisgICAg ICAgIC8qIDNETm93ISBwZmNtcGVxICovCisgICAgICAgIGNhc2UgMHhiMDoK KyAgICAgICAgLyogM0ROb3chIHBmbXVsICovCisgICAgICAgIGNhc2UgMHhi NDoKKyAgICAgICAgLyogM0ROb3chIHBmcmNwaXQyICovCisgICAgICAgIGNh c2UgMHhiNjoKKyAgICAgICAgLyogM0ROb3chIHBtdWxocncgKi8KKyAgICAg ICAgY2FzZSAweGI3OgorICAgICAgICAvKiAzRE5vdyEgcHN3YXBkICovCisg ICAgICAgIGNhc2UgMHhiYjoKKyAgICAgICAgLyogM0ROb3chIHBhdmd1c2Ig Ki8KKyAgICAgICAgY2FzZSAweGJmOgorICAgICAgICAgIGlmICghaTM4Nl9t bXhfcmVnbnVtX3AgKGdkYmFyY2gsIEkzODdfTU0wX1JFR05VTSAodGRlcCkg KyBpci5yZWcpKQorICAgICAgICAgICAgZ290byBub19zdXBwb3J0XzNkbm93 X2RhdGE7CisgICAgICAgICAgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChp ci5yZWdjYWNoZSwgaXIucmVnKTsKKyAgICAgICAgICBicmVhazsKKworICAg ICAgICBkZWZhdWx0Ogorbm9fc3VwcG9ydF8zZG5vd19kYXRhOgorICAgICAg ICAgIG9wY29kZSA9IChvcGNvZGUgPDwgOCkgfCB0bXB1ODsKKyAgICAgICAg ICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAg IH0KKyAgICAgIGJyZWFrOworCisgICAgLyogcnNtICovCisgICAgY2FzZSAw eDBmYWE6CisgICAgICBJMzg2X1JFQ09SRF9BUkNIX0xJU1RfQUREX1JFRyAo WDg2X1JFQ09SRF9FRkxBR1NfUkVHTlVNKTsKKyAgICAgIEkzODZfUkVDT1JE X0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX1JFQVhfUkVHTlVNKTsK KyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVD T1JEX1JFQ1hfUkVHTlVNKTsKKyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElT VF9BRERfUkVHIChYODZfUkVDT1JEX1JFRFhfUkVHTlVNKTsKKyAgICAgIEkz ODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX1JFQlhf UkVHTlVNKTsKKyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVH IChYODZfUkVDT1JEX1JFU1BfUkVHTlVNKTsKKyAgICAgIEkzODZfUkVDT1JE X0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX1JFQlBfUkVHTlVNKTsK KyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVD T1JEX1JFU0lfUkVHTlVNKTsKKyAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElT VF9BRERfUkVHIChYODZfUkVDT1JEX1JFRElfUkVHTlVNKTsKKyAgICAgIGJy ZWFrOworCisgICAgY2FzZSAweDBmYWU6CisgICAgICBpZiAoaTM4Nl9yZWNv cmRfbW9kcm0gKCZpcikpCisJcmV0dXJuIC0xOworICAgICAgc3dpdGNoKGly LnJlZykKKyAgICAgICAgeworICAgICAgICAvKiBmeHNhdmUgKi8KKyAgICAg ICAgY2FzZSAwOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ2NF90 IHRtcHU2NDsKKworICAgICAgICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNU X0FERF9SRUcgKFg4Nl9SRUNPUkRfRUZMQUdTX1JFR05VTSk7CisJICAgIGlm IChpMzg2X3JlY29yZF9sZWFfbW9kcm1fYWRkciAoJmlyLCAmdG1wdTY0KSkK KwkgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtICh0bXB1NjQsIDUxMikpCisgICAgICAgICAgICAg IHJldHVybiAtMTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgLyogZnhyc3RvciAqLworICAgICAgICBjYXNlIDE6CisgICAg ICAgICAgeworICAgICAgICAgICAgaW50IGk7CisKKyAgICAgICAgICAgIEkz ODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JEX0VGTEFH U19SRUdOVU0pOworCisgICAgICAgICAgICBmb3IgKGkgPSBJMzg3X01NMF9S RUdOVU0gKHRkZXApOworICAgICAgICAgICAgICAgICBpMzg2X21teF9yZWdu dW1fcCAoZ2RiYXJjaCwgaSk7IGkrKykKKyAgICAgICAgICAgICAgcmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChpci5yZWdjYWNoZSwgaSk7CisKKyAgICAg ICAgICAgIGZvciAoaSA9IEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOworICAg ICAgICAgICAgICAgICBpMzg2X3NzZV9yZWdudW1fcCAoZ2RiYXJjaCwgaSk7 IGkrKykKKyAgICAgICAgICAgICAgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChpci5yZWdjYWNoZSwgaSk7CisKKyAgICAgICAgICAgIGlmIChpMzg2X214 Y3NyX3JlZ251bV9wIChnZGJhcmNoLCBJMzg3X01YQ1NSX1JFR05VTSh0ZGVw KSkpCisgICAgICAgICAgICAgIHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo aXIucmVnY2FjaGUsIEkzODdfTVhDU1JfUkVHTlVNKHRkZXApKTsKKworICAg ICAgICAgICAgZm9yIChpID0gSTM4N19TVDBfUkVHTlVNICh0ZGVwKTsKKyAg ICAgICAgICAgICAgICAgaTM4Nl9mcF9yZWdudW1fcCAoZ2RiYXJjaCwgaSk7 IGkrKykKKyAgICAgICAgICAgICAgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChpci5yZWdjYWNoZSwgaSk7CisKKyAgICAgICAgICAgIGZvciAoaSA9IEkz ODdfRkNUUkxfUkVHTlVNICh0ZGVwKTsKKyAgICAgICAgICAgICAgICAgaTM4 Nl9mcGNfcmVnbnVtX3AgKGdkYmFyY2gsIGkpOyBpKyspCisgICAgICAgICAg ICAgIHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoaXIucmVnY2FjaGUsIGkp OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICAv KiBsZG14Y3NyICovCisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICBpZiAo IWkzODZfbXhjc3JfcmVnbnVtX3AgKGdkYmFyY2gsIEkzODdfTVhDU1JfUkVH TlVNKHRkZXApKSkKKyAgICAgICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAg ICAgICAgICByZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hl LCBJMzg3X01YQ1NSX1JFR05VTSh0ZGVwKSk7CisgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgLyogc3RteGNzciAqLworICAgICAgICBjYXNlIDM6Cisg ICAgICAgICAgaXIub3QgPSBPVF9MT05HOworICAgICAgICAgIGlmIChpMzg2 X3JlY29yZF9sZWFfbW9kcm0gKCZpcikpCisgICAgICAgICAgICByZXR1cm4g LTE7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogbGZlbmNlICov CisgICAgICAgIGNhc2UgNToKKyAgICAgICAgLyogbWZlbmNlICovCisgICAg ICAgIGNhc2UgNjoKKyAgICAgICAgLyogc2ZlbmNlIGNsZmx1c2ggKi8KKyAg ICAgICAgY2FzZSA3OgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRl ZmF1bHQ6CisgICAgICAgICAgb3Bjb2RlID0gKG9wY29kZSA8PCA4KSB8IGly Lm1vZHJtOworICAgICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgICAg ICBicmVhazsKKyAgICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAvKiBt b3ZudGkgKi8KKyAgICBjYXNlIDB4MGZjMzoKKyAgICAgIGlyLm90ID0gKGly LmRmbGFnID09IDIpID8gT1RfUVVBRCA6IE9UX0xPTkc7CisgICAgICBpZiAo aTM4Nl9yZWNvcmRfbW9kcm0gKCZpcikpCisJcmV0dXJuIC0xOworICAgICAg aWYgKGlyLm1vZCA9PSAzKQorICAgICAgICBnb3RvIG5vX3N1cHBvcnQ7Cisg ICAgICBpci5yZWcgfD0gcmV4X3I7CisgICAgICBpZiAoaTM4Nl9yZWNvcmRf bGVhX21vZHJtICgmaXIpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgICBi cmVhazsKKworICAgIC8qIEFkZCBwcmVmaXggdG8gb3Bjb2RlLiAgKi8KKyAg ICBjYXNlIDB4MGYxMDoKKyAgICBjYXNlIDB4MGYxMToKKyAgICBjYXNlIDB4 MGYxMjoKKyAgICBjYXNlIDB4MGYxMzoKKyAgICBjYXNlIDB4MGYxNDoKKyAg ICBjYXNlIDB4MGYxNjoKKyAgICBjYXNlIDB4MGYxNzoKKyAgICBjYXNlIDB4 MGYyODoKKyAgICBjYXNlIDB4MGYyOToKKyAgICBjYXNlIDB4MGYyYToKKyAg ICBjYXNlIDB4MGYyYjoKKyAgICBjYXNlIDB4MGYyYzoKKyAgICBjYXNlIDB4 MGYyZDoKKyAgICBjYXNlIDB4MGYyZToKKyAgICBjYXNlIDB4MGYyZjoKKyAg ICBjYXNlIDB4MGYzODoKKyAgICBjYXNlIDB4MGYzOToKKyAgICBjYXNlIDB4 MGYzYToKKyAgICBjYXNlIDB4MGY1MDoKKyAgICBjYXNlIDB4MGY1MToKKyAg ICBjYXNlIDB4MGY1MjoKKyAgICBjYXNlIDB4MGY1MzoKKyAgICBjYXNlIDB4 MGY1NDoKKyAgICBjYXNlIDB4MGY1NToKKyAgICBjYXNlIDB4MGY1NjoKKyAg ICBjYXNlIDB4MGY1NzoKKyAgICBjYXNlIDB4MGY1ODoKKyAgICBjYXNlIDB4 MGY1OToKKyAgICBjYXNlIDB4MGY1YToKKyAgICBjYXNlIDB4MGY1YjoKKyAg ICBjYXNlIDB4MGY1YzoKKyAgICBjYXNlIDB4MGY1ZDoKKyAgICBjYXNlIDB4 MGY1ZToKKyAgICBjYXNlIDB4MGY1ZjoKKyAgICBjYXNlIDB4MGY2MDoKKyAg ICBjYXNlIDB4MGY2MToKKyAgICBjYXNlIDB4MGY2MjoKKyAgICBjYXNlIDB4 MGY2MzoKKyAgICBjYXNlIDB4MGY2NDoKKyAgICBjYXNlIDB4MGY2NToKKyAg ICBjYXNlIDB4MGY2NjoKKyAgICBjYXNlIDB4MGY2NzoKKyAgICBjYXNlIDB4 MGY2ODoKKyAgICBjYXNlIDB4MGY2OToKKyAgICBjYXNlIDB4MGY2YToKKyAg ICBjYXNlIDB4MGY2YjoKKyAgICBjYXNlIDB4MGY2YzoKKyAgICBjYXNlIDB4 MGY2ZDoKKyAgICBjYXNlIDB4MGY2ZToKKyAgICBjYXNlIDB4MGY2ZjoKKyAg ICBjYXNlIDB4MGY3MDoKKyAgICBjYXNlIDB4MGY3MToKKyAgICBjYXNlIDB4 MGY3MjoKKyAgICBjYXNlIDB4MGY3MzoKKyAgICBjYXNlIDB4MGY3NDoKKyAg ICBjYXNlIDB4MGY3NToKKyAgICBjYXNlIDB4MGY3NjoKKyAgICBjYXNlIDB4 MGY3YzoKKyAgICBjYXNlIDB4MGY3ZDoKKyAgICBjYXNlIDB4MGY3ZToKKyAg ICBjYXNlIDB4MGY3ZjoKKyAgICBjYXNlIDB4MGZiODoKKyAgICBjYXNlIDB4 MGZjMjoKKyAgICBjYXNlIDB4MGZjNDoKKyAgICBjYXNlIDB4MGZjNToKKyAg ICBjYXNlIDB4MGZjNjoKKyAgICBjYXNlIDB4MGZkMDoKKyAgICBjYXNlIDB4 MGZkMToKKyAgICBjYXNlIDB4MGZkMjoKKyAgICBjYXNlIDB4MGZkMzoKKyAg ICBjYXNlIDB4MGZkNDoKKyAgICBjYXNlIDB4MGZkNToKKyAgICBjYXNlIDB4 MGZkNjoKKyAgICBjYXNlIDB4MGZkNzoKKyAgICBjYXNlIDB4MGZkODoKKyAg ICBjYXNlIDB4MGZkOToKKyAgICBjYXNlIDB4MGZkYToKKyAgICBjYXNlIDB4 MGZkYjoKKyAgICBjYXNlIDB4MGZkYzoKKyAgICBjYXNlIDB4MGZkZDoKKyAg ICBjYXNlIDB4MGZkZToKKyAgICBjYXNlIDB4MGZkZjoKKyAgICBjYXNlIDB4 MGZlMDoKKyAgICBjYXNlIDB4MGZlMToKKyAgICBjYXNlIDB4MGZlMjoKKyAg ICBjYXNlIDB4MGZlMzoKKyAgICBjYXNlIDB4MGZlNDoKKyAgICBjYXNlIDB4 MGZlNToKKyAgICBjYXNlIDB4MGZlNjoKKyAgICBjYXNlIDB4MGZlNzoKKyAg ICBjYXNlIDB4MGZlODoKKyAgICBjYXNlIDB4MGZlOToKKyAgICBjYXNlIDB4 MGZlYToKKyAgICBjYXNlIDB4MGZlYjoKKyAgICBjYXNlIDB4MGZlYzoKKyAg ICBjYXNlIDB4MGZlZDoKKyAgICBjYXNlIDB4MGZlZToKKyAgICBjYXNlIDB4 MGZlZjoKKyAgICBjYXNlIDB4MGZmMDoKKyAgICBjYXNlIDB4MGZmMToKKyAg ICBjYXNlIDB4MGZmMjoKKyAgICBjYXNlIDB4MGZmMzoKKyAgICBjYXNlIDB4 MGZmNDoKKyAgICBjYXNlIDB4MGZmNToKKyAgICBjYXNlIDB4MGZmNjoKKyAg ICBjYXNlIDB4MGZmNzoKKyAgICBjYXNlIDB4MGZmODoKKyAgICBjYXNlIDB4 MGZmOToKKyAgICBjYXNlIDB4MGZmYToKKyAgICBjYXNlIDB4MGZmYjoKKyAg ICBjYXNlIDB4MGZmYzoKKyAgICBjYXNlIDB4MGZmZDoKKyAgICBjYXNlIDB4 MGZmZToKKyAgICAgIHN3aXRjaCAocHJlZml4ZXMpCisgICAgICAgIHsKKyAg ICAgICAgY2FzZSBQUkVGSVhfUkVQTlo6CisgICAgICAgICAgb3Bjb2RlIHw9 IDB4ZjIwMDAwOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBS RUZJWF9EQVRBOgorICAgICAgICAgIG9wY29kZSB8PSAweDY2MDAwMDsKKyAg ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQUkVGSVhfUkVQWjoKKyAg ICAgICAgICBvcGNvZGUgfD0gMHhmMzAwMDA7CisgICAgICAgICAgYnJlYWs7 CisgICAgICAgIH0KK3Jlc3dpdGNoX3ByZWZpeF9hZGQ6CisgICAgICBzd2l0 Y2ggKG9wY29kZSkKKyAgICAgICAgeworICAgICAgICBjYXNlIDB4MGYzODoK KyAgICAgICAgY2FzZSAweDY2MGYzODoKKyAgICAgICAgY2FzZSAweGYyMGYz ODoKKyAgICAgICAgY2FzZSAweDBmM2E6CisgICAgICAgIGNhc2UgMHg2NjBm M2E6CisgICAgICAgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAoaXIuYWRk ciwgJnRtcHU4LCAxKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg aWYgKHJlY29yZF9kZWJ1ZykKKwkgICAgICAgIHByaW50Zl91bmZpbHRlcmVk IChfKCJQcm9jZXNzIHJlY29yZDogZXJyb3IgcmVhZGluZyBtZW1vcnkgYXQg IgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFkZHIgJXMgbGVu ID0gMS5cbiIpLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRy ZXNzIChnZGJhcmNoLCBpci5hZGRyKSk7CisgICAgICAgICAgICAgICAgcmV0 dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgIGlyLmFkZHIrKzsK KyAgICAgICAgICBvcGNvZGUgPSAodWludDMyX3QpIHRtcHU4IHwgb3Bjb2Rl IDw8IDQ7CisgICAgICAgICAgZ290byByZXN3aXRjaF9wcmVmaXhfYWRkOwor ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIG1vdnVwcyAqLworICAg ICAgICBjYXNlIDB4MGYxMDoKKyAgICAgICAgLyogbW92dXBkICovCisgICAg ICAgIGNhc2UgMHg2NjBmMTA6CisgICAgICAgIC8qIG1vdnNzICovCisgICAg ICAgIGNhc2UgMHhmMzBmMTA6CisgICAgICAgIC8qIG1vdnNkICovCisgICAg ICAgIGNhc2UgMHhmMjBmMTA6CisgICAgICAgIC8qIG1vdmxwcyAqLworICAg ICAgICBjYXNlIDB4MGYxMjoKKyAgICAgICAgLyogbW92bHBkICovCisgICAg ICAgIGNhc2UgMHg2NjBmMTI6CisgICAgICAgIC8qIG1vdnNsZHVwICovCisg ICAgICAgIGNhc2UgMHhmMzBmMTI6CisgICAgICAgIC8qIG1vdmRkdXAgKi8K KyAgICAgICAgY2FzZSAweGYyMGYxMjoKKyAgICAgICAgLyogdW5wY2tscHMg Ki8KKyAgICAgICAgY2FzZSAweDBmMTQ6CisgICAgICAgIC8qIHVucGNrbHBk ICovCisgICAgICAgIGNhc2UgMHg2NjBmMTQ6CisgICAgICAgIC8qIHVucGNr aHBzICovCisgICAgICAgIGNhc2UgMHgwZjE1OgorICAgICAgICAvKiB1bnBj a2hwZCAqLworICAgICAgICBjYXNlIDB4NjYwZjE1OgorICAgICAgICAvKiBt b3ZocHMgKi8KKyAgICAgICAgY2FzZSAweDBmMTY6CisgICAgICAgIC8qIG1v dmhwZCAqLworICAgICAgICBjYXNlIDB4NjYwZjE2OgorICAgICAgICAvKiBt b3ZzaGR1cCAqLworICAgICAgICBjYXNlIDB4ZjMwZjE2OgorICAgICAgICAv KiBtb3ZhcHMgKi8KKyAgICAgICAgY2FzZSAweDBmMjg6CisgICAgICAgIC8q IG1vdmFwZCAqLworICAgICAgICBjYXNlIDB4NjYwZjI4OgorICAgICAgICAv KiBjdnRwaTJwcyAqLworICAgICAgICBjYXNlIDB4MGYyYToKKyAgICAgICAg LyogY3Z0cGkycGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGYyYToKKyAgICAg ICAgLyogY3Z0c2kyc3MgKi8KKyAgICAgICAgY2FzZSAweGYzMGYyYToKKyAg ICAgICAgLyogY3Z0c2kyc2QgKi8KKyAgICAgICAgY2FzZSAweGYyMGYyYToK KyAgICAgICAgLyogY3Z0dHBzMnBpICovCisgICAgICAgIGNhc2UgMHgwZjJj OgorICAgICAgICAvKiBjdnR0cGQycGkgKi8KKyAgICAgICAgY2FzZSAweDY2 MGYyYzoKKyAgICAgICAgLyogY3Z0cHMycGkgKi8KKyAgICAgICAgY2FzZSAw eDBmMmQ6CisgICAgICAgIC8qIGN2dHBkMnBpICovCisgICAgICAgIGNhc2Ug MHg2NjBmMmQ6CisgICAgICAgIC8qIHBzaHVmYiAqLworICAgICAgICBjYXNl IDB4NjYwZjM4MDA6CisgICAgICAgIC8qIHBoYWRkdyAqLworICAgICAgICBj YXNlIDB4NjYwZjM4MDE6CisgICAgICAgIC8qIHBoYWRkZCAqLworICAgICAg ICBjYXNlIDB4NjYwZjM4MDI6CisgICAgICAgIC8qIHBoYWRkc3cgKi8KKyAg ICAgICAgY2FzZSAweDY2MGYzODAzOgorICAgICAgICAvKiBwbWFkZHVic3cg Ki8KKyAgICAgICAgY2FzZSAweDY2MGYzODA0OgorICAgICAgICAvKiBwaHN1 YncgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzODA1OgorICAgICAgICAvKiBw aHN1YmQgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzODA2OgorICAgICAgICAv KiBwaGFkZHN3ICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgwNzoKKyAgICAg ICAgLyogcHNpZ25iICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgwODoKKyAg ICAgICAgLyogcHNpZ253ICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgwOToK KyAgICAgICAgLyogcHNpZ25kICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgw YToKKyAgICAgICAgLyogcG11bGhyc3cgKi8KKyAgICAgICAgY2FzZSAweDY2 MGYzODBiOgorICAgICAgICAvKiBwYmxlbmR2YiAqLworICAgICAgICBjYXNl IDB4NjYwZjM4MTA6CisgICAgICAgIC8qIGJsZW5kdnBzICovCisgICAgICAg IGNhc2UgMHg2NjBmMzgxNDoKKyAgICAgICAgLyogYmxlbmR2cGQgKi8KKyAg ICAgICAgY2FzZSAweDY2MGYzODE1OgorICAgICAgICAvKiBwYWJzYiAqLwor ICAgICAgICBjYXNlIDB4NjYwZjM4MWM6CisgICAgICAgIC8qIHBhYnN3ICov CisgICAgICAgIGNhc2UgMHg2NjBmMzgxZDoKKyAgICAgICAgLyogcGFic2Qg Ki8KKyAgICAgICAgY2FzZSAweDY2MGYzODFlOgorICAgICAgICAvKiBwbW92 c3hidyAqLworICAgICAgICBjYXNlIDB4NjYwZjM4MjA6CisgICAgICAgIC8q IHBtb3ZzeGJkICovCisgICAgICAgIGNhc2UgMHg2NjBmMzgyMToKKyAgICAg ICAgLyogcG1vdnN4YnEgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzODIyOgor ICAgICAgICAvKiBwbW92c3h3ZCAqLworICAgICAgICBjYXNlIDB4NjYwZjM4 MjM6CisgICAgICAgIC8qIHBtb3ZzeHdxICovCisgICAgICAgIGNhc2UgMHg2 NjBmMzgyNDoKKyAgICAgICAgLyogcG1vdnN4ZHEgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGYzODI1OgorICAgICAgICAvKiBwbXVsZHEgKi8KKyAgICAgICAg Y2FzZSAweDY2MGYzODI4OgorICAgICAgICAvKiBwY21wZXFxICovCisgICAg ICAgIGNhc2UgMHg2NjBmMzgyOToKKyAgICAgICAgLyogbW92bnRkcWEgKi8K KyAgICAgICAgY2FzZSAweDY2MGYzODJhOgorICAgICAgICAvKiByb3VuZHBz ICovCisgICAgICAgIGNhc2UgMHg2NjBmM2EwODoKKyAgICAgICAgLyogcm91 bmRwZCAqLworICAgICAgICBjYXNlIDB4NjYwZjNhMDk6CisgICAgICAgIC8q IHJvdW5kc3MgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzYTBhOgorICAgICAg ICAvKiByb3VuZHNkICovCisgICAgICAgIGNhc2UgMHg2NjBmM2EwYjoKKyAg ICAgICAgLyogYmxlbmRwcyAqLworICAgICAgICBjYXNlIDB4NjYwZjNhMGM6 CisgICAgICAgIC8qIGJsZW5kcGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGYz YTBkOgorICAgICAgICAvKiBwYmxlbmR3ICovCisgICAgICAgIGNhc2UgMHg2 NjBmM2EwZToKKyAgICAgICAgLyogcGFsaWduciAqLworICAgICAgICBjYXNl IDB4NjYwZjNhMGY6CisgICAgICAgIC8qIHBpbnNyYiAqLworICAgICAgICBj YXNlIDB4NjYwZjNhMjA6CisgICAgICAgIC8qIGluc2VydHBzICovCisgICAg ICAgIGNhc2UgMHg2NjBmM2EyMToKKyAgICAgICAgLyogcGluc3JkIHBpbnNy cSAqLworICAgICAgICBjYXNlIDB4NjYwZjNhMjI6CisgICAgICAgIC8qIGRw cHMgKi8KKyAgICAgICAgY2FzZSAweDY2MGYzYTQwOgorICAgICAgICAvKiBk cHBkICovCisgICAgICAgIGNhc2UgMHg2NjBmM2E0MToKKyAgICAgICAgLyog bXBzYWRidyAqLworICAgICAgICBjYXNlIDB4NjYwZjNhNDI6CisgICAgICAg IC8qIHBjbXBlc3RybSAqLworICAgICAgICBjYXNlIDB4NjYwZjNhNjA6Cisg ICAgICAgIC8qIHBjbXBlc3RyaSAqLworICAgICAgICBjYXNlIDB4NjYwZjNh NjE6CisgICAgICAgIC8qIHBjbXBpc3RybSAqLworICAgICAgICBjYXNlIDB4 NjYwZjNhNjI6CisgICAgICAgIC8qIHBjbXBpc3RyaSAqLworICAgICAgICBj YXNlIDB4NjYwZjNhNjM6CisgICAgICAgIC8qIHNxcnRwcyAqLworICAgICAg ICBjYXNlIDB4MGY1MToKKyAgICAgICAgLyogc3FydHBkICovCisgICAgICAg IGNhc2UgMHg2NjBmNTE6CisgICAgICAgIC8qIHNxcnRzZCAqLworICAgICAg ICBjYXNlIDB4ZjIwZjUxOgorICAgICAgICAvKiBzcXJ0c3MgKi8KKyAgICAg ICAgY2FzZSAweGYzMGY1MToKKyAgICAgICAgLyogcnNxcnRwcyAqLworICAg ICAgICBjYXNlIDB4MGY1MjoKKyAgICAgICAgLyogcnNxcnRzcyAqLworICAg ICAgICBjYXNlIDB4ZjMwZjUyOgorICAgICAgICAvKiByY3BwcyAqLworICAg ICAgICBjYXNlIDB4MGY1MzoKKyAgICAgICAgLyogcmNwc3MgKi8KKyAgICAg ICAgY2FzZSAweGYzMGY1MzoKKyAgICAgICAgLyogYW5kcHMgKi8KKyAgICAg ICAgY2FzZSAweDBmNTQ6CisgICAgICAgIC8qIGFuZHBkICovCisgICAgICAg IGNhc2UgMHg2NjBmNTQ6CisgICAgICAgIC8qIGFuZG5wcyAqLworICAgICAg ICBjYXNlIDB4MGY1NToKKyAgICAgICAgLyogYW5kbnBkICovCisgICAgICAg IGNhc2UgMHg2NjBmNTU6CisgICAgICAgIC8qIG9ycHMgKi8KKyAgICAgICAg Y2FzZSAweDBmNTY6CisgICAgICAgIC8qIG9ycGQgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGY1NjoKKyAgICAgICAgLyogeG9ycHMgKi8KKyAgICAgICAgY2Fz ZSAweDBmNTc6CisgICAgICAgIC8qIHhvcnBkICovCisgICAgICAgIGNhc2Ug MHg2NjBmNTc6CisgICAgICAgIC8qIGFkZHBzICovCisgICAgICAgIGNhc2Ug MHgwZjU4OgorICAgICAgICAvKiBhZGRwZCAqLworICAgICAgICBjYXNlIDB4 NjYwZjU4OgorICAgICAgICAvKiBhZGRzZCAqLworICAgICAgICBjYXNlIDB4 ZjIwZjU4OgorICAgICAgICAvKiBhZGRzcyAqLworICAgICAgICBjYXNlIDB4 ZjMwZjU4OgorICAgICAgICAvKiBtdWxwcyAqLworICAgICAgICBjYXNlIDB4 MGY1OToKKyAgICAgICAgLyogbXVscGQgKi8KKyAgICAgICAgY2FzZSAweDY2 MGY1OToKKyAgICAgICAgLyogbXVsc2QgKi8KKyAgICAgICAgY2FzZSAweGYy MGY1OToKKyAgICAgICAgLyogbXVsc3MgKi8KKyAgICAgICAgY2FzZSAweGYz MGY1OToKKyAgICAgICAgLyogY3Z0cHMycGQgKi8KKyAgICAgICAgY2FzZSAw eDBmNWE6CisgICAgICAgIC8qIGN2dHBkMnBzICovCisgICAgICAgIGNhc2Ug MHg2NjBmNWE6CisgICAgICAgIC8qIGN2dHNkMnNzICovCisgICAgICAgIGNh c2UgMHhmMjBmNWE6CisgICAgICAgIC8qIGN2dHNzMnNkICovCisgICAgICAg IGNhc2UgMHhmMzBmNWE6CisgICAgICAgIC8qIGN2dGRxMnBzICovCisgICAg ICAgIGNhc2UgMHgwZjViOgorICAgICAgICAvKiBjdnRwczJkcSAqLworICAg ICAgICBjYXNlIDB4NjYwZjViOgorICAgICAgICAvKiBjdnR0cHMyZHEgKi8K KyAgICAgICAgY2FzZSAweGYzMGY1YjoKKyAgICAgICAgLyogc3VicHMgKi8K KyAgICAgICAgY2FzZSAweDBmNWM6CisgICAgICAgIC8qIHN1YnBkICovCisg ICAgICAgIGNhc2UgMHg2NjBmNWM6CisgICAgICAgIC8qIHN1YnNkICovCisg ICAgICAgIGNhc2UgMHhmMjBmNWM6CisgICAgICAgIC8qIHN1YnNzICovCisg ICAgICAgIGNhc2UgMHhmMzBmNWM6CisgICAgICAgIC8qIG1pbnBzICovCisg ICAgICAgIGNhc2UgMHgwZjVkOgorICAgICAgICAvKiBtaW5wZCAqLworICAg ICAgICBjYXNlIDB4NjYwZjVkOgorICAgICAgICAvKiBtaW5zZCAqLworICAg ICAgICBjYXNlIDB4ZjIwZjVkOgorICAgICAgICAvKiBtaW5zcyAqLworICAg ICAgICBjYXNlIDB4ZjMwZjVkOgorICAgICAgICAvKiBkaXZwcyAqLworICAg ICAgICBjYXNlIDB4MGY1ZToKKyAgICAgICAgLyogZGl2cGQgKi8KKyAgICAg ICAgY2FzZSAweDY2MGY1ZToKKyAgICAgICAgLyogZGl2c2QgKi8KKyAgICAg ICAgY2FzZSAweGYyMGY1ZToKKyAgICAgICAgLyogZGl2c3MgKi8KKyAgICAg ICAgY2FzZSAweGYzMGY1ZToKKyAgICAgICAgLyogbWF4cHMgKi8KKyAgICAg ICAgY2FzZSAweDBmNWY6CisgICAgICAgIC8qIG1heHBkICovCisgICAgICAg IGNhc2UgMHg2NjBmNWY6CisgICAgICAgIC8qIG1heHNkICovCisgICAgICAg IGNhc2UgMHhmMjBmNWY6CisgICAgICAgIC8qIG1heHNzICovCisgICAgICAg IGNhc2UgMHhmMzBmNWY6CisgICAgICAgIC8qIHB1bnBja2xidyAqLworICAg ICAgICBjYXNlIDB4NjYwZjYwOgorICAgICAgICAvKiBwdW5wY2tsd2QgKi8K KyAgICAgICAgY2FzZSAweDY2MGY2MToKKyAgICAgICAgLyogcHVucGNrbGRx ICovCisgICAgICAgIGNhc2UgMHg2NjBmNjI6CisgICAgICAgIC8qIHBhY2tz c3diICovCisgICAgICAgIGNhc2UgMHg2NjBmNjM6CisgICAgICAgIC8qIHBj bXBndGIgKi8KKyAgICAgICAgY2FzZSAweDY2MGY2NDoKKyAgICAgICAgLyog cGNtcGd0dyAqLworICAgICAgICBjYXNlIDB4NjYwZjY1OgorICAgICAgICAv KiBwY21wZ3RsICovCisgICAgICAgIGNhc2UgMHg2NjBmNjY6CisgICAgICAg IC8qIHBhY2t1c3diICovCisgICAgICAgIGNhc2UgMHg2NjBmNjc6CisgICAg ICAgIC8qIHB1bnBja2hidyAqLworICAgICAgICBjYXNlIDB4NjYwZjY4Ogor ICAgICAgICAvKiBwdW5wY2tod2QgKi8KKyAgICAgICAgY2FzZSAweDY2MGY2 OToKKyAgICAgICAgLyogcHVucGNraGRxICovCisgICAgICAgIGNhc2UgMHg2 NjBmNmE6CisgICAgICAgIC8qIHBhY2tzc2R3ICovCisgICAgICAgIGNhc2Ug MHg2NjBmNmI6CisgICAgICAgIC8qIHB1bnBja2xxZHEgKi8KKyAgICAgICAg Y2FzZSAweDY2MGY2YzoKKyAgICAgICAgLyogcHVucGNraHFkcSAqLworICAg ICAgICBjYXNlIDB4NjYwZjZkOgorICAgICAgICAvKiBtb3ZkICovCisgICAg ICAgIGNhc2UgMHg2NjBmNmU6CisgICAgICAgIC8qIG1vdmRxYSAqLworICAg ICAgICBjYXNlIDB4NjYwZjZmOgorICAgICAgICAvKiBtb3ZkcXUgKi8KKyAg ICAgICAgY2FzZSAweGYzMGY2ZjoKKyAgICAgICAgLyogcHNodWZkICovCisg ICAgICAgIGNhc2UgMHg2NjBmNzA6CisgICAgICAgIC8qIHBzaHVmbHcgKi8K KyAgICAgICAgY2FzZSAweGYyMGY3MDoKKyAgICAgICAgLyogcHNodWZodyAq LworICAgICAgICBjYXNlIDB4ZjMwZjcwOgorICAgICAgICAvKiBwY21wZXFi ICovCisgICAgICAgIGNhc2UgMHg2NjBmNzQ6CisgICAgICAgIC8qIHBjbXBl cXcgKi8KKyAgICAgICAgY2FzZSAweDY2MGY3NToKKyAgICAgICAgLyogcGNt cGVxbCAqLworICAgICAgICBjYXNlIDB4NjYwZjc2OgorICAgICAgICAvKiBo YWRkcGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGY3YzoKKyAgICAgICAgLyog aGFkZHBzICovCisgICAgICAgIGNhc2UgMHhmMjBmN2M6CisgICAgICAgIC8q IGhzdWJwZCAqLworICAgICAgICBjYXNlIDB4NjYwZjdkOgorICAgICAgICAv KiBoc3VicHMgKi8KKyAgICAgICAgY2FzZSAweGYyMGY3ZDoKKyAgICAgICAg LyogbW92cSAqLworICAgICAgICBjYXNlIDB4ZjMwZjdlOgorICAgICAgICAv KiBjbXBwcyAqLworICAgICAgICBjYXNlIDB4MGZjMjoKKyAgICAgICAgLyog Y21wcGQgKi8KKyAgICAgICAgY2FzZSAweDY2MGZjMjoKKyAgICAgICAgLyog Y21wc2QgKi8KKyAgICAgICAgY2FzZSAweGYyMGZjMjoKKyAgICAgICAgLyog Y21wc3MgKi8KKyAgICAgICAgY2FzZSAweGYzMGZjMjoKKyAgICAgICAgLyog cGluc3J3ICovCisgICAgICAgIGNhc2UgMHg2NjBmYzQ6CisgICAgICAgIC8q IHNodWZwcyAqLworICAgICAgICBjYXNlIDB4MGZjNjoKKyAgICAgICAgLyog c2h1ZnBkICovCisgICAgICAgIGNhc2UgMHg2NjBmYzY6CisgICAgICAgIC8q IGFkZHN1YnBkICovCisgICAgICAgIGNhc2UgMHg2NjBmZDA6CisgICAgICAg IC8qIGFkZHN1YnBzICovCisgICAgICAgIGNhc2UgMHhmMjBmZDA6CisgICAg ICAgIC8qIHBzcmx3ICovCisgICAgICAgIGNhc2UgMHg2NjBmZDE6CisgICAg ICAgIC8qIHBzcmxkICovCisgICAgICAgIGNhc2UgMHg2NjBmZDI6CisgICAg ICAgIC8qIHBzcmxxICovCisgICAgICAgIGNhc2UgMHg2NjBmZDM6CisgICAg ICAgIC8qIHBhZGRxICovCisgICAgICAgIGNhc2UgMHg2NjBmZDQ6CisgICAg ICAgIC8qIHBtdWxsdyAqLworICAgICAgICBjYXNlIDB4NjYwZmQ1OgorICAg ICAgICAvKiBtb3ZxMmRxICovCisgICAgICAgIGNhc2UgMHhmMzBmZDY6Cisg ICAgICAgIC8qIHBzdWJ1c2IgKi8KKyAgICAgICAgY2FzZSAweDY2MGZkODoK KyAgICAgICAgLyogcHN1YnVzdyAqLworICAgICAgICBjYXNlIDB4NjYwZmQ5 OgorICAgICAgICAvKiBwbWludWIgKi8KKyAgICAgICAgY2FzZSAweDY2MGZk YToKKyAgICAgICAgLyogcGFuZCAqLworICAgICAgICBjYXNlIDB4NjYwZmRi OgorICAgICAgICAvKiBwYWRkdXNiICovCisgICAgICAgIGNhc2UgMHg2NjBm ZGM6CisgICAgICAgIC8qIHBhZGR1c3cgKi8KKyAgICAgICAgY2FzZSAweDY2 MGZkZDoKKyAgICAgICAgLyogcG1heHViICovCisgICAgICAgIGNhc2UgMHg2 NjBmZGU6CisgICAgICAgIC8qIHBhbmRuICovCisgICAgICAgIGNhc2UgMHg2 NjBmZGY6CisgICAgICAgIC8qIHBhdmdiICovCisgICAgICAgIGNhc2UgMHg2 NjBmZTA6CisgICAgICAgIC8qIHBzcmF3ICovCisgICAgICAgIGNhc2UgMHg2 NjBmZTE6CisgICAgICAgIC8qIHBzcmFkICovCisgICAgICAgIGNhc2UgMHg2 NjBmZTI6CisgICAgICAgIC8qIHBhdmd3ICovCisgICAgICAgIGNhc2UgMHg2 NjBmZTM6CisgICAgICAgIC8qIHBtdWxodXcgKi8KKyAgICAgICAgY2FzZSAw eDY2MGZlNDoKKyAgICAgICAgLyogcG11bGh3ICovCisgICAgICAgIGNhc2Ug MHg2NjBmZTU6CisgICAgICAgIC8qIGN2dHRwZDJkcSAqLworICAgICAgICBj YXNlIDB4NjYwZmU2OgorICAgICAgICAvKiBjdnRwZDJkcSAqLworICAgICAg ICBjYXNlIDB4ZjIwZmU2OgorICAgICAgICAvKiBjdnRkcTJwZCAqLworICAg ICAgICBjYXNlIDB4ZjMwZmU2OgorICAgICAgICAvKiBwc3Vic2IgKi8KKyAg ICAgICAgY2FzZSAweDY2MGZlODoKKyAgICAgICAgLyogcHN1YnN3ICovCisg ICAgICAgIGNhc2UgMHg2NjBmZTk6CisgICAgICAgIC8qIHBtaW5zdyAqLwor ICAgICAgICBjYXNlIDB4NjYwZmVhOgorICAgICAgICAvKiBwb3IgKi8KKyAg ICAgICAgY2FzZSAweDY2MGZlYjoKKyAgICAgICAgLyogcGFkZHNiICovCisg ICAgICAgIGNhc2UgMHg2NjBmZWM6CisgICAgICAgIC8qIHBhZGRzdyAqLwor ICAgICAgICBjYXNlIDB4NjYwZmVkOgorICAgICAgICAvKiBwbWF4c3cgKi8K KyAgICAgICAgY2FzZSAweDY2MGZlZToKKyAgICAgICAgLyogcHhvciAqLwor ICAgICAgICBjYXNlIDB4NjYwZmVmOgorICAgICAgICAvKiBsZGRxdSAqLwor ICAgICAgICBjYXNlIDB4NjYwZmYwOgorICAgICAgICAvKiBwc2xsdyAqLwor ICAgICAgICBjYXNlIDB4NjYwZmYxOgorICAgICAgICAvKiBwc2xsZCAqLwor ICAgICAgICBjYXNlIDB4NjYwZmYyOgorICAgICAgICAvKiBwc2xscSAqLwor ICAgICAgICBjYXNlIDB4NjYwZmYzOgorICAgICAgICAvKiBwbXVsdWRxICov CisgICAgICAgIGNhc2UgMHg2NjBmZjQ6CisgICAgICAgIC8qIHBtYWRkd2Qg Ki8KKyAgICAgICAgY2FzZSAweDY2MGZmNToKKyAgICAgICAgLyogcHNhZGJ3 ICovCisgICAgICAgIGNhc2UgMHg2NjBmZjY6CisgICAgICAgIC8qIHBzdWJi ICovCisgICAgICAgIGNhc2UgMHg2NjBmZjg6CisgICAgICAgIC8qIHBzdWJ3 ICovCisgICAgICAgIGNhc2UgMHg2NjBmZjk6CisgICAgICAgIC8qIHBzdWJs ICovCisgICAgICAgIGNhc2UgMHg2NjBmZmE6CisgICAgICAgIC8qIHBzdWJx ICovCisgICAgICAgIGNhc2UgMHg2NjBmZmI6CisgICAgICAgIC8qIHBhZGRi ICovCisgICAgICAgIGNhc2UgMHg2NjBmZmM6CisgICAgICAgIC8qIHBhZGR3 ICovCisgICAgICAgIGNhc2UgMHg2NjBmZmQ6CisgICAgICAgIC8qIHBhZGRs ICovCisgICAgICAgIGNhc2UgMHg2NjBmZmU6CisgICAgICAgICAgaWYgKGkz ODZfcmVjb3JkX21vZHJtICgmaXIpKQorCSAgICByZXR1cm4gLTE7CisgICAg ICAgICAgaXIucmVnIHw9IHJleF9yOworICAgICAgICAgIGlmICghaTM4Nl9z c2VfcmVnbnVtX3AgKGdkYmFyY2gsIEkzODdfWE1NMF9SRUdOVU0gKHRkZXAp ICsgaXIucmVnKSkKKyAgICAgICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAg ICAgICAgICByZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKGlyLnJlZ2NhY2hl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTM4N19Y TU0wX1JFR05VTSAodGRlcCkgKyBpci5yZWcpOworICAgICAgICAgIGlmICgo b3Bjb2RlICYgMHhmZmZmZmZmYykgPT0gMHg2NjBmM2E2MCkKKyAgICAgICAg ICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JE X0VGTEFHU19SRUdOVU0pOworICAgICAgICAgIGJyZWFrOworCisgICAgICAg IC8qIG1vdnVwcyAqLworICAgICAgICBjYXNlIDB4MGYxMToKKyAgICAgICAg LyogbW92dXBkICovCisgICAgICAgIGNhc2UgMHg2NjBmMTE6CisgICAgICAg IC8qIG1vdnNzICovCisgICAgICAgIGNhc2UgMHhmMzBmMTE6CisgICAgICAg IC8qIG1vdnNkICovCisgICAgICAgIGNhc2UgMHhmMjBmMTE6CisgICAgICAg IC8qIG1vdmxwcyAqLworICAgICAgICBjYXNlIDB4MGYxMzoKKyAgICAgICAg LyogbW92bHBkICovCisgICAgICAgIGNhc2UgMHg2NjBmMTM6CisgICAgICAg IC8qIG1vdmhwcyAqLworICAgICAgICBjYXNlIDB4MGYxNzoKKyAgICAgICAg LyogbW92aHBkICovCisgICAgICAgIGNhc2UgMHg2NjBmMTc6CisgICAgICAg IC8qIG1vdmFwcyAqLworICAgICAgICBjYXNlIDB4MGYyOToKKyAgICAgICAg LyogbW92YXBkICovCisgICAgICAgIGNhc2UgMHg2NjBmMjk6CisgICAgICAg IC8qIHBleHRyYiAqLworICAgICAgICBjYXNlIDB4NjYwZjNhMTQ6CisgICAg ICAgIC8qIHBleHRydyAqLworICAgICAgICBjYXNlIDB4NjYwZjNhMTU6Cisg ICAgICAgIC8qIHBleHRyZCBwZXh0cnEgKi8KKyAgICAgICAgY2FzZSAweDY2 MGYzYTE2OgorICAgICAgICAvKiBleHRyYWN0cHMgKi8KKyAgICAgICAgY2Fz ZSAweDY2MGYzYTE3OgorICAgICAgICAvKiBtb3ZkcWEgKi8KKyAgICAgICAg Y2FzZSAweDY2MGY3ZjoKKyAgICAgICAgLyogbW92ZHF1ICovCisgICAgICAg IGNhc2UgMHhmMzBmN2Y6CisgICAgICAgICAgaWYgKGkzODZfcmVjb3JkX21v ZHJtICgmaXIpKQorCSAgICByZXR1cm4gLTE7CisgICAgICAgICAgaWYgKGly Lm1vZCA9PSAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZiAo b3Bjb2RlID09IDB4MGYxMyB8fCBvcGNvZGUgPT0gMHg2NjBmMTMKKyAgICAg ICAgICAgICAgICAgIHx8IG9wY29kZSA9PSAweDBmMTcgfHwgb3Bjb2RlID09 IDB4NjYwZjE3KQorICAgICAgICAgICAgICAgIGdvdG8gbm9fc3VwcG9ydDsK KyAgICAgICAgICAgICAgaXIucm0gfD0gaXIucmV4X2I7CisgICAgICAgICAg ICAgIGlmICghaTM4Nl9zc2VfcmVnbnVtX3AgKGdkYmFyY2gsIEkzODdfWE1N MF9SRUdOVU0gKHRkZXApICsgaXIucm0pKQorICAgICAgICAgICAgICAgIGdv dG8gbm9fc3VwcG9ydDsKKyAgICAgICAgICAgICAgcmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChpci5yZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKSAr IGlyLnJtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlKQorICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMHg2NjBm M2ExNDoKKyAgICAgICAgICAgICAgICAgICAgaXIub3QgPSBPVF9CWVRFOwor ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg IGNhc2UgMHg2NjBmM2ExNToKKyAgICAgICAgICAgICAgICAgICAgaXIub3Qg PSBPVF9XT1JEOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICAgIGNhc2UgMHg2NjBmM2ExNjoKKyAgICAgICAgICAgICAg ICAgICAgaXIub3QgPSBPVF9MT05HOworICAgICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMHg2NjBmM2ExNzoKKyAg ICAgICAgICAgICAgICAgICAgaXIub3QgPSBPVF9RVUFEOworICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6 CisgICAgICAgICAgICAgICAgICAgIGlyLm90ID0gT1RfRFFVQUQ7CisgICAg ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoJmlyKSkK KyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogbW92bnRwcyAqLworICAg ICAgICBjYXNlIDB4MGYyYjoKKyAgICAgICAgLyogbW92bnRwZCAqLworICAg ICAgICBjYXNlIDB4NjYwZjJiOgorICAgICAgICAvKiBtb3ZudHEgKi8KKyAg ICAgICAgY2FzZSAweDBmZTc6CisgICAgICAgIC8qIG1vdm50ZHEgKi8KKyAg ICAgICAgY2FzZSAweDY2MGZlNzoKKyAgICAgICAgICBpZiAoaXIubW9kID09 IDMpCisgICAgICAgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICAgICAg aWYgKG9wY29kZSA9PSAweDBmZTcpCisgICAgICAgICAgICBpci5vdCA9IE9U X1FVQUQ7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaXIub3QgPSBP VF9EUVVBRDsKKyAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJt ICgmaXIpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgIGJy ZWFrOworCisgICAgICAgIC8qIGN2dHRzczJzaSAqLworICAgICAgICBjYXNl IDB4ZjMwZjJjOgorICAgICAgICAvKiBjdnR0c2Qyc2kgKi8KKyAgICAgICAg Y2FzZSAweGYyMGYyYzoKKyAgICAgICAgLyogY3Z0c3Myc2kgKi8KKyAgICAg ICAgY2FzZSAweGYzMGYyZDoKKyAgICAgICAgLyogY3Z0c2Qyc2kgKi8KKyAg ICAgICAgY2FzZSAweGYyMGYyZDoKKyAgICAgICAgLyogY3JjMzIgKi8KKyAg ICAgICAgY2FzZSAweGYyMGYzOGYwOgorICAgICAgICAvKiBjcmMzMiAqLwor ICAgICAgICBjYXNlIDB4ZjIwZjM4ZjE6CisgICAgICAgIC8qIG1vdm1za3Bz ICovCisgICAgICAgIGNhc2UgMHgwZjUwOgorICAgICAgICAvKiBtb3Ztc2tw ZCAqLworICAgICAgICBjYXNlIDB4NjYwZjUwOgorICAgICAgICAvKiBwZXh0 cncgKi8KKyAgICAgICAgY2FzZSAweDBmYzU6CisgICAgICAgIC8qIHBleHRy dyAqLworICAgICAgICBjYXNlIDB4NjYwZmM1OgorICAgICAgICAvKiBwbW92 bXNrYiAqLworICAgICAgICBjYXNlIDB4MGZkNzoKKyAgICAgICAgLyogcG1v dm1za2IgKi8KKyAgICAgICAgY2FzZSAweDY2MGZkNzoKKyAgICAgICAgICBJ Mzg2X1JFQ09SRF9BUkNIX0xJU1RfQUREX1JFRyAoaXIucmVnIHwgcmV4X3Ip OworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHBzaHVmYiAqLwor ICAgICAgICBjYXNlIDB4MGYzODAwOgorICAgICAgICAvKiBwaGFkZHcgKi8K KyAgICAgICAgY2FzZSAweDBmMzgwMToKKyAgICAgICAgLyogcGhhZGRkICov CisgICAgICAgIGNhc2UgMHgwZjM4MDI6CisgICAgICAgIC8qIHBoYWRkc3cg Ki8KKyAgICAgICAgY2FzZSAweDBmMzgwMzoKKyAgICAgICAgLyogcG1hZGR1 YnN3ICovCisgICAgICAgIGNhc2UgMHgwZjM4MDQ6CisgICAgICAgIC8qIHBo c3VidyAqLworICAgICAgICBjYXNlIDB4MGYzODA1OgorICAgICAgICAvKiBw aHN1YmQgKi8KKyAgICAgICAgY2FzZSAweDBmMzgwNjoKKyAgICAgICAgLyog cGhhZGRzdyAqLworICAgICAgICBjYXNlIDB4MGYzODA3OgorICAgICAgICAv KiBwc2lnbmIgKi8KKyAgICAgICAgY2FzZSAweDBmMzgwODoKKyAgICAgICAg LyogcHNpZ253ICovCisgICAgICAgIGNhc2UgMHgwZjM4MDk6CisgICAgICAg IC8qIHBzaWduZCAqLworICAgICAgICBjYXNlIDB4MGYzODBhOgorICAgICAg ICAvKiBwbXVsaHJzdyAqLworICAgICAgICBjYXNlIDB4MGYzODBiOgorICAg ICAgICAvKiBwYWJzYiAqLworICAgICAgICBjYXNlIDB4MGYzODFjOgorICAg ICAgICAvKiBwYWJzdyAqLworICAgICAgICBjYXNlIDB4MGYzODFkOgorICAg ICAgICAvKiBwYWJzZCAqLworICAgICAgICBjYXNlIDB4MGYzODFlOgorICAg ICAgICAvKiBwYWNrdXNkdyAqLworICAgICAgICBjYXNlIDB4MGYzODJiOgor ICAgICAgICAvKiBwbW92enhidyAqLworICAgICAgICBjYXNlIDB4MGYzODMw OgorICAgICAgICAvKiBwbW92enhiZCAqLworICAgICAgICBjYXNlIDB4MGYz ODMxOgorICAgICAgICAvKiBwbW92enhicSAqLworICAgICAgICBjYXNlIDB4 MGYzODMyOgorICAgICAgICAvKiBwbW92enh3ZCAqLworICAgICAgICBjYXNl IDB4MGYzODMzOgorICAgICAgICAvKiBwbW92enh3cSAqLworICAgICAgICBj YXNlIDB4MGYzODM0OgorICAgICAgICAvKiBwbW92enhkcSAqLworICAgICAg ICBjYXNlIDB4MGYzODM1OgorICAgICAgICAvKiBwY21wZ3RxICovCisgICAg ICAgIGNhc2UgMHgwZjM4Mzc6CisgICAgICAgIC8qIHBtaW5zYiAqLworICAg ICAgICBjYXNlIDB4MGYzODM4OgorICAgICAgICAvKiBwbWluc2QgKi8KKyAg ICAgICAgY2FzZSAweDBmMzgzOToKKyAgICAgICAgLyogcG1pbnV3ICovCisg ICAgICAgIGNhc2UgMHgwZjM4M2E6CisgICAgICAgIC8qIHBtaW51ZCAqLwor ICAgICAgICBjYXNlIDB4MGYzODNiOgorICAgICAgICAvKiBwbWF4c2IgKi8K KyAgICAgICAgY2FzZSAweDBmMzgzYzoKKyAgICAgICAgLyogcG1heHNkICov CisgICAgICAgIGNhc2UgMHgwZjM4M2Q6CisgICAgICAgIC8qIHBtYXh1dyAq LworICAgICAgICBjYXNlIDB4MGYzODNlOgorICAgICAgICAvKiBwbWF4dWQg Ki8KKyAgICAgICAgY2FzZSAweDBmMzgzZjoKKyAgICAgICAgLyogcG11bGxk ICovCisgICAgICAgIGNhc2UgMHgwZjM4NDA6CisgICAgICAgIC8qIHBobWlu cG9zdXcgKi8KKyAgICAgICAgY2FzZSAweDBmMzg0MToKKyAgICAgICAgLyog cGFsaWduciAqLworICAgICAgICBjYXNlIDB4MGYzYTBmOgorICAgICAgICAv KiBwdW5wY2tsYncgKi8KKyAgICAgICAgY2FzZSAweDBmNjA6CisgICAgICAg IC8qIHB1bnBja2x3ZCAqLworICAgICAgICBjYXNlIDB4MGY2MToKKyAgICAg ICAgLyogcHVucGNrbGRxICovCisgICAgICAgIGNhc2UgMHgwZjYyOgorICAg ICAgICAvKiBwYWNrc3N3YiAqLworICAgICAgICBjYXNlIDB4MGY2MzoKKyAg ICAgICAgLyogcGNtcGd0YiAqLworICAgICAgICBjYXNlIDB4MGY2NDoKKyAg ICAgICAgLyogcGNtcGd0dyAqLworICAgICAgICBjYXNlIDB4MGY2NToKKyAg ICAgICAgLyogcGNtcGd0bCAqLworICAgICAgICBjYXNlIDB4MGY2NjoKKyAg ICAgICAgLyogcGFja3Vzd2IgKi8KKyAgICAgICAgY2FzZSAweDBmNjc6Cisg ICAgICAgIC8qIHB1bnBja2hidyAqLworICAgICAgICBjYXNlIDB4MGY2ODoK KyAgICAgICAgLyogcHVucGNraHdkICovCisgICAgICAgIGNhc2UgMHgwZjY5 OgorICAgICAgICAvKiBwdW5wY2toZHEgKi8KKyAgICAgICAgY2FzZSAweDBm NmE6CisgICAgICAgIC8qIHBhY2tzc2R3ICovCisgICAgICAgIGNhc2UgMHgw ZjZiOgorICAgICAgICAvKiBtb3ZkICovCisgICAgICAgIGNhc2UgMHgwZjZl OgorICAgICAgICAvKiBtb3ZxICovCisgICAgICAgIGNhc2UgMHgwZjZmOgor ICAgICAgICAvKiBwc2h1ZncgKi8KKyAgICAgICAgY2FzZSAweDBmNzA6Cisg ICAgICAgIC8qIHBjbXBlcWIgKi8KKyAgICAgICAgY2FzZSAweDBmNzQ6Cisg ICAgICAgIC8qIHBjbXBlcXcgKi8KKyAgICAgICAgY2FzZSAweDBmNzU6Cisg ICAgICAgIC8qIHBjbXBlcWwgKi8KKyAgICAgICAgY2FzZSAweDBmNzY6Cisg ICAgICAgIC8qIHBpbnNydyAqLworICAgICAgICBjYXNlIDB4MGZjNDoKKyAg ICAgICAgLyogcHNybHcgKi8KKyAgICAgICAgY2FzZSAweDBmZDE6CisgICAg ICAgIC8qIHBzcmxkICovCisgICAgICAgIGNhc2UgMHgwZmQyOgorICAgICAg ICAvKiBwc3JscSAqLworICAgICAgICBjYXNlIDB4MGZkMzoKKyAgICAgICAg LyogcGFkZHEgKi8KKyAgICAgICAgY2FzZSAweDBmZDQ6CisgICAgICAgIC8q IHBtdWxsdyAqLworICAgICAgICBjYXNlIDB4MGZkNToKKyAgICAgICAgLyog bW92ZHEycSAqLworICAgICAgICBjYXNlIDB4ZjIwZmQ2OgorICAgICAgICAv KiBwc3VidXNiICovCisgICAgICAgIGNhc2UgMHgwZmQ4OgorICAgICAgICAv KiBwc3VidXN3ICovCisgICAgICAgIGNhc2UgMHgwZmQ5OgorICAgICAgICAv KiBwbWludWIgKi8KKyAgICAgICAgY2FzZSAweDBmZGE6CisgICAgICAgIC8q IHBhbmQgKi8KKyAgICAgICAgY2FzZSAweDBmZGI6CisgICAgICAgIC8qIHBh ZGR1c2IgKi8KKyAgICAgICAgY2FzZSAweDBmZGM6CisgICAgICAgIC8qIHBh ZGR1c3cgKi8KKyAgICAgICAgY2FzZSAweDBmZGQ6CisgICAgICAgIC8qIHBt YXh1YiAqLworICAgICAgICBjYXNlIDB4MGZkZToKKyAgICAgICAgLyogcGFu ZG4gKi8KKyAgICAgICAgY2FzZSAweDBmZGY6CisgICAgICAgIC8qIHBhdmdi ICovCisgICAgICAgIGNhc2UgMHgwZmUwOgorICAgICAgICAvKiBwc3JhdyAq LworICAgICAgICBjYXNlIDB4MGZlMToKKyAgICAgICAgLyogcHNyYWQgKi8K KyAgICAgICAgY2FzZSAweDBmZTI6CisgICAgICAgIC8qIHBhdmd3ICovCisg ICAgICAgIGNhc2UgMHgwZmUzOgorICAgICAgICAvKiBwbXVsaHV3ICovCisg ICAgICAgIGNhc2UgMHgwZmU0OgorICAgICAgICAvKiBwbXVsaHcgKi8KKyAg ICAgICAgY2FzZSAweDBmZTU6CisgICAgICAgIC8qIHBzdWJzYiAqLworICAg ICAgICBjYXNlIDB4MGZlODoKKyAgICAgICAgLyogcHN1YnN3ICovCisgICAg ICAgIGNhc2UgMHgwZmU5OgorICAgICAgICAvKiBwbWluc3cgKi8KKyAgICAg ICAgY2FzZSAweDBmZWE6CisgICAgICAgIC8qIHBvciAqLworICAgICAgICBj YXNlIDB4MGZlYjoKKyAgICAgICAgLyogcGFkZHNiICovCisgICAgICAgIGNh c2UgMHgwZmVjOgorICAgICAgICAvKiBwYWRkc3cgKi8KKyAgICAgICAgY2Fz ZSAweDBmZWQ6CisgICAgICAgIC8qIHBtYXhzdyAqLworICAgICAgICBjYXNl IDB4MGZlZToKKyAgICAgICAgLyogcHhvciAqLworICAgICAgICBjYXNlIDB4 MGZlZjoKKyAgICAgICAgLyogcHNsbHcgKi8KKyAgICAgICAgY2FzZSAweDBm ZjE6CisgICAgICAgIC8qIHBzbGxkICovCisgICAgICAgIGNhc2UgMHgwZmYy OgorICAgICAgICAvKiBwc2xscSAqLworICAgICAgICBjYXNlIDB4MGZmMzoK KyAgICAgICAgLyogcG11bHVkcSAqLworICAgICAgICBjYXNlIDB4MGZmNDoK KyAgICAgICAgLyogcG1hZGR3ZCAqLworICAgICAgICBjYXNlIDB4MGZmNToK KyAgICAgICAgLyogcHNhZGJ3ICovCisgICAgICAgIGNhc2UgMHgwZmY2Ogor ICAgICAgICAvKiBwc3ViYiAqLworICAgICAgICBjYXNlIDB4MGZmODoKKyAg ICAgICAgLyogcHN1YncgKi8KKyAgICAgICAgY2FzZSAweDBmZjk6CisgICAg ICAgIC8qIHBzdWJsICovCisgICAgICAgIGNhc2UgMHgwZmZhOgorICAgICAg ICAvKiBwc3VicSAqLworICAgICAgICBjYXNlIDB4MGZmYjoKKyAgICAgICAg LyogcGFkZGIgKi8KKyAgICAgICAgY2FzZSAweDBmZmM6CisgICAgICAgIC8q IHBhZGR3ICovCisgICAgICAgIGNhc2UgMHgwZmZkOgorICAgICAgICAvKiBw YWRkbCAqLworICAgICAgICBjYXNlIDB4MGZmZToKKyAgICAgICAgICBpZiAo aTM4Nl9yZWNvcmRfbW9kcm0gKCZpcikpCisJICAgIHJldHVybiAtMTsKKyAg ICAgICAgICBpZiAoIWkzODZfbW14X3JlZ251bV9wIChnZGJhcmNoLCBJMzg3 X01NMF9SRUdOVU0gKHRkZXApICsgaXIucmVnKSkKKyAgICAgICAgICAgIGdv dG8gbm9fc3VwcG9ydDsKKyAgICAgICAgICByZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKGlyLnJlZ2NhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSTM4N19NTTBfUkVHTlVNICh0ZGVwKSArIGlyLnJlZyk7 CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogcHNsbHcgKi8KKyAg ICAgICAgY2FzZSAweDBmNzE6CisgICAgICAgIC8qIHBzbGxkICovCisgICAg ICAgIGNhc2UgMHgwZjcyOgorICAgICAgICAvKiBwc2xscSAqLworICAgICAg ICBjYXNlIDB4MGY3MzoKKyAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9k cm0gKCZpcikpCisJICAgIHJldHVybiAtMTsKKyAgICAgICAgICBpZiAoIWkz ODZfbW14X3JlZ251bV9wIChnZGJhcmNoLCBJMzg3X01NMF9SRUdOVU0gKHRk ZXApICsgaXIucm0pKQorICAgICAgICAgICAgZ290byBub19zdXBwb3J0Owor ICAgICAgICAgIHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoaXIucmVnY2Fj aGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMzg3 X01NMF9SRUdOVU0gKHRkZXApICsgaXIucm0pOworICAgICAgICAgIGJyZWFr OworCisgICAgICAgIC8qIHBzbGx3ICovCisgICAgICAgIGNhc2UgMHg2NjBm NzE6CisgICAgICAgIC8qIHBzbGxkICovCisgICAgICAgIGNhc2UgMHg2NjBm NzI6CisgICAgICAgIC8qIHBzbGxxICovCisgICAgICAgIGNhc2UgMHg2NjBm NzM6CisgICAgICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgmaXIpKQor CSAgICByZXR1cm4gLTE7CisgICAgICAgICAgaXIucm0gfD0gaXIucmV4X2I7 CisgICAgICAgICAgaWYgKCFpMzg2X3NzZV9yZWdudW1fcCAoZ2RiYXJjaCwg STM4N19YTU0wX1JFR05VTSAodGRlcCkgKyBpci5ybSkpCisgICAgICAgICAg ICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICAgICAgcmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChpci5yZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEkzODdfWE1NMF9SRUdOVU0gKHRkZXApICsgaXIu cm0pOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIG1vdmQgKi8K KyAgICAgICAgY2FzZSAweDBmN2U6CisgICAgICAgIC8qIG1vdmQgKi8KKyAg ICAgICAgY2FzZSAweDY2MGY3ZToKKyAgICAgICAgICBpZiAoaTM4Nl9yZWNv cmRfbW9kcm0gKCZpcikpCisJICAgIHJldHVybiAtMTsKKyAgICAgICAgICBp ZiAoaXIubW9kID09IDMpCisgICAgICAgICAgICBJMzg2X1JFQ09SRF9BUkNI X0xJU1RfQUREX1JFRyAoaXIucm0gfCBpci5yZXhfYik7CisgICAgICAgICAg ZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZiAoaXIuZGZs YWcgPT0gMikKKyAgICAgICAgICAgICAgICBpci5vdCA9IE9UX1FVQUQ7Cisg ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpci5vdCA9IE9U X0xPTkc7CisgICAgICAgICAgICAgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9k cm0gKCZpcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAg ICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIG1vdnEg Ki8KKyAgICAgICAgY2FzZSAweDBmN2Y6CisgICAgICAgICAgaWYgKGkzODZf cmVjb3JkX21vZHJtICgmaXIpKQorCSAgICByZXR1cm4gLTE7CisgICAgICAg ICAgaWYgKGlyLm1vZCA9PSAzKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBpZiAoIWkzODZfbW14X3JlZ251bV9wIChnZGJhcmNoLCBJMzg3X01N MF9SRUdOVU0gKHRkZXApICsgaXIucm0pKQorICAgICAgICAgICAgICAgIGdv dG8gbm9fc3VwcG9ydDsKKyAgICAgICAgICAgICAgcmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChpci5yZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJMzg3X01NMF9SRUdOVU0gKHRkZXApICsg aXIucm0pOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgaXIub3QgPSBPVF9RVUFEOworICAg ICAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgmaXIpKQor ICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICBicmVhazsKKworICAgICAgICAvKiBwb3BjbnQgKi8KKyAgICAg ICAgY2FzZSAweGYzMGZiODoKKyAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRf bW9kcm0gKCZpcikpCisJICAgIHJldHVybiAtMTsKKyAgICAgICAgICBJMzg2 X1JFQ09SRF9BUkNIX0xJU1RfQUREX1JFRyAoaXIucmVnKTsKKyAgICAgICAg ICBJMzg2X1JFQ09SRF9BUkNIX0xJU1RfQUREX1JFRyAoWDg2X1JFQ09SRF9F RkxBR1NfUkVHTlVNKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICAv KiBtb3ZxICovCisgICAgICAgIGNhc2UgMHg2NjBmZDY6CisgICAgICAgICAg aWYgKGkzODZfcmVjb3JkX21vZHJtICgmaXIpKQorCSAgICByZXR1cm4gLTE7 CisgICAgICAgICAgaWYgKGlyLm1vZCA9PSAzKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICBpci5ybSB8PSBpci5yZXhfYjsKKyAgICAgICAgICAg ICAgaWYgKCFpMzg2X3NzZV9yZWdudW1fcCAoZ2RiYXJjaCwgSTM4N19YTU0w X1JFR05VTSAodGRlcCkgKyBpci5ybSkpCisgICAgICAgICAgICAgICAgZ290 byBub19zdXBwb3J0OworICAgICAgICAgICAgICByZWNvcmRfYXJjaF9saXN0 X2FkZF9yZWcgKGlyLnJlZ2NhY2hlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEkzODdfWE1NMF9SRUdOVU0gKHRkZXApICsg aXIucm0pOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgaXIub3QgPSBPVF9RVUFEOworICAg ICAgICAgICAgICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgmaXIpKQor ICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICBicmVhazsKKworICAgICAgICAvKiBwdGVzdCAqLworICAgICAg ICBjYXNlIDB4NjYwZjM4MTc6CisgICAgICAgIC8qIHVjb21pc3MgKi8KKyAg ICAgICAgY2FzZSAweDBmMmU6CisgICAgICAgIC8qIHVjb21pc2QgKi8KKyAg ICAgICAgY2FzZSAweDY2MGYyZToKKyAgICAgICAgLyogY29taXNzICovCisg ICAgICAgIGNhc2UgMHgwZjJmOgorICAgICAgICAvKiBjb21pc2QgKi8KKyAg ICAgICAgY2FzZSAweDY2MGYyZjoKKyAgICAgICAgICBJMzg2X1JFQ09SRF9B UkNIX0xJU1RfQUREX1JFRyAoWDg2X1JFQ09SRF9FRkxBR1NfUkVHTlVNKTsK KyAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBtYXNrbW92cSAqLwor ICAgICAgICBjYXNlIDB4MGZmNzoKKyAgICAgICAgICByZWdjYWNoZV9yYXdf cmVhZF91bnNpZ25lZCAoaXIucmVnY2FjaGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlyLnJlZ21hcFtYODZfUkVDT1JEX1JF RElfUkVHTlVNXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnRtcHVsb25nZXN0KTsKKyAgICAgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtICh0bXB1bG9uZ2VzdCwgNjQpKQorICAgICAgICAg ICAgcmV0dXJuIC0xOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8q IG1hc2ttb3ZkcXUgKi8KKyAgICAgICAgY2FzZSAweDY2MGZmNzoKKyAgICAg ICAgICByZWdjYWNoZV9yYXdfcmVhZF91bnNpZ25lZCAoaXIucmVnY2FjaGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlyLnJl Z21hcFtYODZfUkVDT1JEX1JFRElfUkVHTlVNXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnRtcHVsb25nZXN0KTsKKyAgICAg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1bG9uZ2Vz dCwgMTI4KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICBi cmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIGdvdG8gbm9f c3VwcG9ydDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg YnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgaWYgKG9wY29kZSA+IDB4 ZmYpCi0JaXIuYWRkciAtPSAyOwotICAgICAgZWxzZQotCWlyLmFkZHIgLT0g MTsKICAgICAgIGdvdG8gbm9fc3VwcG9ydDsKICAgICAgIGJyZWFrOwogICAg IH0KQEAgLTUzNzAsOCArNjU1NCw5IEBAIHJlc3dpdGNoOgogCiBub19zdXBw b3J0OgogICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQg ZG9lc24ndCBzdXBwb3J0IGluc3RydWN0aW9uIDB4JTAyeCAiCi0JCSAgICAg ICAiYXQgYWRkcmVzcyAlcy5cbiIpLAotCQkgICAgICh1bnNpZ25lZCBpbnQp IChvcGNvZGUpLCBwYWRkcmVzcyAoZ2RiYXJjaCwgaXIuYWRkcikpOworICAg ICAgICAgICAgICAgICAgICAgICAiYXQgYWRkcmVzcyAlcy5cbiIpLAorICAg ICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgKG9wY29kZSksCisg ICAgICAgICAgICAgICAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgaXIub3Jp Z19hZGRyKSk7CiAgIHJldHVybiAtMTsKIH0KIAo= --00504502cbe9d4b12c047a24b72a--