uncond.isa revision 7316
112752Sodanrc@yahoo.com.br// Copyright (c) 2010 ARM Limited 212752Sodanrc@yahoo.com.br// All rights reserved 312752Sodanrc@yahoo.com.br// 412752Sodanrc@yahoo.com.br// The license below extends only to copyright in the software and shall 512752Sodanrc@yahoo.com.br// not be construed as granting a license to any other intellectual 612752Sodanrc@yahoo.com.br// property including but not limited to intellectual property relating 712752Sodanrc@yahoo.com.br// to a hardware implementation of the functionality of the software 812752Sodanrc@yahoo.com.br// licensed hereunder. You may use the software subject to the license 912752Sodanrc@yahoo.com.br// terms below provided that you ensure that this notice is replicated 1012752Sodanrc@yahoo.com.br// unmodified and in its entirety in all distributions of the software, 1112752Sodanrc@yahoo.com.br// modified or unmodified, in source code or in binary form. 1212752Sodanrc@yahoo.com.br// 1312752Sodanrc@yahoo.com.br// Redistribution and use in source and binary forms, with or without 1412752Sodanrc@yahoo.com.br// modification, are permitted provided that the following conditions are 1512752Sodanrc@yahoo.com.br// met: redistributions of source code must retain the above copyright 1612752Sodanrc@yahoo.com.br// notice, this list of conditions and the following disclaimer; 1712752Sodanrc@yahoo.com.br// redistributions in binary form must reproduce the above copyright 1812752Sodanrc@yahoo.com.br// notice, this list of conditions and the following disclaimer in the 1912752Sodanrc@yahoo.com.br// documentation and/or other materials provided with the distribution; 2012752Sodanrc@yahoo.com.br// neither the name of the copyright holders nor the names of its 2112752Sodanrc@yahoo.com.br// contributors may be used to endorse or promote products derived from 2212752Sodanrc@yahoo.com.br// this software without specific prior written permission. 2312752Sodanrc@yahoo.com.br// 2412752Sodanrc@yahoo.com.br// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2512752Sodanrc@yahoo.com.br// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2612752Sodanrc@yahoo.com.br// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2712752Sodanrc@yahoo.com.br// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2812752Sodanrc@yahoo.com.br// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2912752Sodanrc@yahoo.com.br// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 3012752Sodanrc@yahoo.com.br// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3112752Sodanrc@yahoo.com.br// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3212752Sodanrc@yahoo.com.br// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3312752Sodanrc@yahoo.com.br// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3412752Sodanrc@yahoo.com.br// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3512752Sodanrc@yahoo.com.br// 3612752Sodanrc@yahoo.com.br// Authors: Gabe Black 3712752Sodanrc@yahoo.com.br 3812752Sodanrc@yahoo.com.brdef format ArmUnconditional() {{ 3912752Sodanrc@yahoo.com.br decode_block = ''' 4012752Sodanrc@yahoo.com.br { 4112752Sodanrc@yahoo.com.br const IntRegIndex rn = (IntRegIndex)(uint32_t)bits(machInst, 19, 16); 4212752Sodanrc@yahoo.com.br const uint32_t op1 = bits(machInst, 27, 20); 4312752Sodanrc@yahoo.com.br if (bits(op1, 7) == 0) { 4412752Sodanrc@yahoo.com.br const uint32_t op2 = bits(machInst, 7, 4); 4512752Sodanrc@yahoo.com.br if (op1 == 0x10) { 4612752Sodanrc@yahoo.com.br if (bits((uint32_t)rn, 0) == 1 && op2 == 0) { 4712752Sodanrc@yahoo.com.br return new Setend(machInst, bits(machInst, 9)); 4812752Sodanrc@yahoo.com.br } else if (bits((uint32_t)rn, 0) == 0 && bits(op2, 1) == 0) { 4912752Sodanrc@yahoo.com.br const bool enable = bits(machInst, 19, 18) == 0x2; 5012752Sodanrc@yahoo.com.br const uint32_t mods = bits(machInst, 4, 0) | 5112752Sodanrc@yahoo.com.br (bits(machInst, 8, 6) << 5) | 5212752Sodanrc@yahoo.com.br (bits(machInst, 17) << 8) | 5312752Sodanrc@yahoo.com.br ((enable ? 1 : 0) << 9); 5412752Sodanrc@yahoo.com.br return new Cps(machInst, mods); 5512752Sodanrc@yahoo.com.br } 5612752Sodanrc@yahoo.com.br } else if (bits(op1, 6, 5) == 0x1) { 5712752Sodanrc@yahoo.com.br return new WarnUnimplemented( 5812752Sodanrc@yahoo.com.br "Advanced SIMD data-processing", machInst); 5912752Sodanrc@yahoo.com.br } else if (bits(op1, 6, 4) == 0x4) { 6012752Sodanrc@yahoo.com.br if (bits(op1, 0) == 0) { 6112752Sodanrc@yahoo.com.br return new WarnUnimplemented( 6212752Sodanrc@yahoo.com.br "Advanced SIMD element or structure load/store", 6312752Sodanrc@yahoo.com.br machInst); 6412752Sodanrc@yahoo.com.br } else if (bits(op1, 2, 0) == 1) { 6512752Sodanrc@yahoo.com.br // Unallocated memory hint 6612752Sodanrc@yahoo.com.br return new NopInst(machInst); 6712752Sodanrc@yahoo.com.br } else if (bits(op1, 2, 0) == 5) { 6812752Sodanrc@yahoo.com.br const bool add = bits(machInst, 23); 6912752Sodanrc@yahoo.com.br const uint32_t imm12 = bits(machInst, 11, 0); 7012752Sodanrc@yahoo.com.br if (add) { 7112752Sodanrc@yahoo.com.br return new %(pli_iadd)s(machInst, INTREG_ZERO, 7212752Sodanrc@yahoo.com.br rn, add, imm12); 7312752Sodanrc@yahoo.com.br } else { 7412752Sodanrc@yahoo.com.br return new %(pli_isub)s(machInst, INTREG_ZERO, 7512752Sodanrc@yahoo.com.br rn, add, imm12); 7612752Sodanrc@yahoo.com.br } 7712752Sodanrc@yahoo.com.br } 7812752Sodanrc@yahoo.com.br } else if (bits(op1, 6, 4) == 0x5) { 7912752Sodanrc@yahoo.com.br if (bits(op1, 1, 0) == 0x1) { 8012752Sodanrc@yahoo.com.br const bool add = bits(machInst, 23); 8112752Sodanrc@yahoo.com.br const bool pldw = bits(machInst, 22); 8212752Sodanrc@yahoo.com.br const uint32_t imm12 = bits(machInst, 11, 0); 8312752Sodanrc@yahoo.com.br if (pldw) { 8412752Sodanrc@yahoo.com.br if (add) { 8512752Sodanrc@yahoo.com.br return new %(pldw_iadd)s(machInst, INTREG_ZERO, 8612752Sodanrc@yahoo.com.br rn, add, imm12); 8712752Sodanrc@yahoo.com.br } else { 8812752Sodanrc@yahoo.com.br return new %(pldw_isub)s(machInst, INTREG_ZERO, 8912752Sodanrc@yahoo.com.br rn, add, imm12); 9012752Sodanrc@yahoo.com.br } 9112752Sodanrc@yahoo.com.br } else { 9212752Sodanrc@yahoo.com.br if (add) { 9312752Sodanrc@yahoo.com.br return new %(pld_iadd)s(machInst, INTREG_ZERO, 9412752Sodanrc@yahoo.com.br rn, add, imm12); 9512752Sodanrc@yahoo.com.br } else { 9612752Sodanrc@yahoo.com.br return new %(pld_isub)s(machInst, INTREG_ZERO, 9712752Sodanrc@yahoo.com.br rn, add, imm12); 9812752Sodanrc@yahoo.com.br } 9912752Sodanrc@yahoo.com.br } 10012752Sodanrc@yahoo.com.br } else if (op1 == 0x57) { 10112752Sodanrc@yahoo.com.br switch (op2) { 10212752Sodanrc@yahoo.com.br case 0x1: 10312752Sodanrc@yahoo.com.br return new WarnUnimplemented("clrex", machInst); 10412752Sodanrc@yahoo.com.br case 0x4: 10512752Sodanrc@yahoo.com.br return new WarnUnimplemented("dsb", machInst); 10612752Sodanrc@yahoo.com.br case 0x5: 10712752Sodanrc@yahoo.com.br return new WarnUnimplemented("dmb", machInst); 10812752Sodanrc@yahoo.com.br case 0x6: 10912752Sodanrc@yahoo.com.br return new WarnUnimplemented("isb", machInst); 11012752Sodanrc@yahoo.com.br } 11112752Sodanrc@yahoo.com.br } 11212752Sodanrc@yahoo.com.br } else if (bits(op2, 0) == 0) { 11312752Sodanrc@yahoo.com.br switch (op1 & 0xf7) { 11412752Sodanrc@yahoo.com.br case 0x61: 11512752Sodanrc@yahoo.com.br // Unallocated memory hint 11612752Sodanrc@yahoo.com.br return new NopInst(machInst); 11712752Sodanrc@yahoo.com.br case 0x65: 11812752Sodanrc@yahoo.com.br { 11912752Sodanrc@yahoo.com.br const uint32_t imm5 = bits(machInst, 11, 7); 12012752Sodanrc@yahoo.com.br const uint32_t type = bits(machInst, 6, 5); 12112752Sodanrc@yahoo.com.br const bool add = bits(machInst, 23); 12212752Sodanrc@yahoo.com.br const IntRegIndex rm = 12312752Sodanrc@yahoo.com.br (IntRegIndex)(uint32_t)bits(machInst, 3, 0); 12412752Sodanrc@yahoo.com.br if (add) { 12512752Sodanrc@yahoo.com.br return new %(pli_radd)s(machInst, INTREG_ZERO, rn, 12612752Sodanrc@yahoo.com.br add, imm5, type, rm); 12712752Sodanrc@yahoo.com.br } else { 12812752Sodanrc@yahoo.com.br return new %(pli_rsub)s(machInst, INTREG_ZERO, rn, 12912752Sodanrc@yahoo.com.br add, imm5, type, rm); 13012752Sodanrc@yahoo.com.br } 13112752Sodanrc@yahoo.com.br } 13212752Sodanrc@yahoo.com.br case 0x71: 13312752Sodanrc@yahoo.com.br case 0x75: 13412752Sodanrc@yahoo.com.br { 13512752Sodanrc@yahoo.com.br const uint32_t imm5 = bits(machInst, 11, 7); 13612752Sodanrc@yahoo.com.br const uint32_t type = bits(machInst, 6, 5); 13712752Sodanrc@yahoo.com.br const bool add = bits(machInst, 23); 13812752Sodanrc@yahoo.com.br const bool pldw = bits(machInst, 22); 13912752Sodanrc@yahoo.com.br const IntRegIndex rm = 14012752Sodanrc@yahoo.com.br (IntRegIndex)(uint32_t)bits(machInst, 3, 0); 14112752Sodanrc@yahoo.com.br if (pldw) { 14212752Sodanrc@yahoo.com.br if (add) { 14312752Sodanrc@yahoo.com.br return new %(pldw_radd)s(machInst, INTREG_ZERO, 14412752Sodanrc@yahoo.com.br rn, add, imm5, 14512752Sodanrc@yahoo.com.br type, rm); 14612752Sodanrc@yahoo.com.br } else { 14712752Sodanrc@yahoo.com.br return new %(pldw_rsub)s(machInst, INTREG_ZERO, 14812752Sodanrc@yahoo.com.br rn, add, imm5, 14912752Sodanrc@yahoo.com.br type, rm); 15012752Sodanrc@yahoo.com.br } 15112752Sodanrc@yahoo.com.br } else { 15212752Sodanrc@yahoo.com.br if (add) { 15312752Sodanrc@yahoo.com.br return new %(pld_radd)s(machInst, INTREG_ZERO, 15412752Sodanrc@yahoo.com.br rn, add, imm5, 15512752Sodanrc@yahoo.com.br type, rm); 15612752Sodanrc@yahoo.com.br } else { 15712752Sodanrc@yahoo.com.br return new %(pld_rsub)s(machInst, INTREG_ZERO, 15812752Sodanrc@yahoo.com.br rn, add, imm5, 15912752Sodanrc@yahoo.com.br type, rm); 16012752Sodanrc@yahoo.com.br } 16112752Sodanrc@yahoo.com.br } 16212752Sodanrc@yahoo.com.br } 16312752Sodanrc@yahoo.com.br } 16412752Sodanrc@yahoo.com.br } 16512752Sodanrc@yahoo.com.br } else { 16612752Sodanrc@yahoo.com.br switch (bits(machInst, 26, 25)) { 16712752Sodanrc@yahoo.com.br case 0x0: 16812752Sodanrc@yahoo.com.br { 16912752Sodanrc@yahoo.com.br const uint32_t val = ((machInst >> 20) & 0x5); 17012752Sodanrc@yahoo.com.br if (val == 0x4) { 17112752Sodanrc@yahoo.com.br const uint32_t mode = bits(machInst, 4, 0); 17212752Sodanrc@yahoo.com.br switch (bits(machInst, 24, 21)) { 17312752Sodanrc@yahoo.com.br case 0x2: 17412752Sodanrc@yahoo.com.br return new %(srs)s(machInst, mode, 17512752Sodanrc@yahoo.com.br SrsOp::DecrementAfter, false); 17612752Sodanrc@yahoo.com.br case 0x3: 17712752Sodanrc@yahoo.com.br return new %(srs_w)s(machInst, mode, 17812752Sodanrc@yahoo.com.br SrsOp::DecrementAfter, true); 17912752Sodanrc@yahoo.com.br case 0x6: 18012752Sodanrc@yahoo.com.br return new %(srs_u)s(machInst, mode, 18112752Sodanrc@yahoo.com.br SrsOp::IncrementAfter, false); 18212752Sodanrc@yahoo.com.br case 0x7: 18312752Sodanrc@yahoo.com.br return new %(srs_uw)s(machInst, mode, 18412752Sodanrc@yahoo.com.br SrsOp::IncrementAfter, true); 18512752Sodanrc@yahoo.com.br case 0xa: 18612752Sodanrc@yahoo.com.br return new %(srs_p)s(machInst, mode, 18712752Sodanrc@yahoo.com.br SrsOp::DecrementBefore, false); 18812752Sodanrc@yahoo.com.br case 0xb: 18912752Sodanrc@yahoo.com.br return new %(srs_pw)s(machInst, mode, 19012752Sodanrc@yahoo.com.br SrsOp::DecrementBefore, true); 19112752Sodanrc@yahoo.com.br case 0xe: 19212752Sodanrc@yahoo.com.br return new %(srs_pu)s(machInst, mode, 19312752Sodanrc@yahoo.com.br SrsOp::IncrementBefore, false); 19412752Sodanrc@yahoo.com.br case 0xf: 19512752Sodanrc@yahoo.com.br return new %(srs_puw)s(machInst, mode, 19612752Sodanrc@yahoo.com.br SrsOp::IncrementBefore, true); 19713215Sodanrc@yahoo.com.br } 19813215Sodanrc@yahoo.com.br return new Unknown(machInst); 19913215Sodanrc@yahoo.com.br } else if (val == 0x1) { 20012752Sodanrc@yahoo.com.br switch (bits(machInst, 24, 21)) { 20113215Sodanrc@yahoo.com.br case 0x0: 20213215Sodanrc@yahoo.com.br return new %(rfe)s(machInst, rn, 20312752Sodanrc@yahoo.com.br RfeOp::DecrementAfter, false); 20412752Sodanrc@yahoo.com.br case 0x1: 20512752Sodanrc@yahoo.com.br return new %(rfe_w)s(machInst, rn, 20612752Sodanrc@yahoo.com.br RfeOp::DecrementAfter, true); 20712752Sodanrc@yahoo.com.br case 0x4: 20812752Sodanrc@yahoo.com.br return new %(rfe_u)s(machInst, rn, 20912752Sodanrc@yahoo.com.br RfeOp::IncrementAfter, false); 21012752Sodanrc@yahoo.com.br case 0x5: 21112752Sodanrc@yahoo.com.br return new %(rfe_uw)s(machInst, rn, 21212752Sodanrc@yahoo.com.br RfeOp::IncrementAfter, true); 21312752Sodanrc@yahoo.com.br case 0x8: 21412752Sodanrc@yahoo.com.br return new %(rfe_p)s(machInst, rn, 21512752Sodanrc@yahoo.com.br RfeOp::DecrementBefore, false); 21612752Sodanrc@yahoo.com.br case 0x9: 21712752Sodanrc@yahoo.com.br return new %(rfe_pw)s(machInst, rn, 21812752Sodanrc@yahoo.com.br RfeOp::DecrementBefore, true); 21912752Sodanrc@yahoo.com.br case 0xc: 22012752Sodanrc@yahoo.com.br return new %(rfe_pu)s(machInst, rn, 22112752Sodanrc@yahoo.com.br RfeOp::IncrementBefore, false); 22212752Sodanrc@yahoo.com.br case 0xd: 22312752Sodanrc@yahoo.com.br return new %(rfe_puw)s(machInst, rn, 22412752Sodanrc@yahoo.com.br RfeOp::IncrementBefore, true); 22512752Sodanrc@yahoo.com.br } 22612752Sodanrc@yahoo.com.br return new Unknown(machInst); 22712752Sodanrc@yahoo.com.br } 22812752Sodanrc@yahoo.com.br } 22912752Sodanrc@yahoo.com.br break; 23012752Sodanrc@yahoo.com.br case 0x1: 23112752Sodanrc@yahoo.com.br { 23212752Sodanrc@yahoo.com.br const uint32_t imm = 23312752Sodanrc@yahoo.com.br (sext<26>(bits(machInst, 23, 0) << 2)) | 23412752Sodanrc@yahoo.com.br (bits(machInst, 24) << 1); 23512752Sodanrc@yahoo.com.br return new BlxImm(machInst, imm); 23612752Sodanrc@yahoo.com.br } 23712752Sodanrc@yahoo.com.br case 0x2: 23812752Sodanrc@yahoo.com.br if (bits(op1, 0) == 1) { 23912752Sodanrc@yahoo.com.br if (rn == INTREG_PC) { 24012752Sodanrc@yahoo.com.br if (bits(op1, 4, 3) != 0x0) { 24112752Sodanrc@yahoo.com.br return new WarnUnimplemented( 24212752Sodanrc@yahoo.com.br "ldc, ldc2 (literal)", machInst); 24312752Sodanrc@yahoo.com.br } 24412752Sodanrc@yahoo.com.br } else { 24512752Sodanrc@yahoo.com.br if (op1 == 0xC3 || op1 == 0xC7) { 24612752Sodanrc@yahoo.com.br return new WarnUnimplemented( 24712752Sodanrc@yahoo.com.br "ldc, ldc2 (immediate)", machInst); 24812752Sodanrc@yahoo.com.br } 24912752Sodanrc@yahoo.com.br } 25012752Sodanrc@yahoo.com.br if (op1 == 0xC5) { 25112752Sodanrc@yahoo.com.br return new WarnUnimplemented("mrrc, mrrc2", machInst); 25212752Sodanrc@yahoo.com.br } 25312752Sodanrc@yahoo.com.br } else { 25412752Sodanrc@yahoo.com.br if (bits(op1, 4, 3) != 0 || bits(op1, 1) == 1) { 25512752Sodanrc@yahoo.com.br return new WarnUnimplemented("stc, stc2", machInst); 25612752Sodanrc@yahoo.com.br } else if (op1 == 0xC4) { 25712752Sodanrc@yahoo.com.br return new WarnUnimplemented("mcrr, mcrrc", machInst); 25812752Sodanrc@yahoo.com.br } 25912752Sodanrc@yahoo.com.br } 26012752Sodanrc@yahoo.com.br break; 26112752Sodanrc@yahoo.com.br case 0x3: 26212752Sodanrc@yahoo.com.br { 26312752Sodanrc@yahoo.com.br const bool op = bits(machInst, 4); 26412752Sodanrc@yahoo.com.br if (op) { 26512752Sodanrc@yahoo.com.br if (bits(op1, 0)) { 26612752Sodanrc@yahoo.com.br return new WarnUnimplemented( 26712752Sodanrc@yahoo.com.br "mrc, mrc2", machInst); 26812752Sodanrc@yahoo.com.br } else { 26912752Sodanrc@yahoo.com.br return new WarnUnimplemented( 27012752Sodanrc@yahoo.com.br "mcr, mcr2", machInst); 27112752Sodanrc@yahoo.com.br } 27212752Sodanrc@yahoo.com.br } else { 27312752Sodanrc@yahoo.com.br return new WarnUnimplemented("cdp, cdp2", machInst); 27412752Sodanrc@yahoo.com.br } 27512752Sodanrc@yahoo.com.br } 27612752Sodanrc@yahoo.com.br break; 27712752Sodanrc@yahoo.com.br } 27812752Sodanrc@yahoo.com.br } 27912752Sodanrc@yahoo.com.br return new Unknown(machInst); 28012752Sodanrc@yahoo.com.br } 28112752Sodanrc@yahoo.com.br ''' % { 28212752Sodanrc@yahoo.com.br "pli_iadd" : "PLI_" + loadImmClassName(False, True, False, 1), 28312756Snikos.nikoleris@arm.com "pli_isub" : "PLI_" + loadImmClassName(False, False, False, 1), 28412752Sodanrc@yahoo.com.br "pld_iadd" : "PLD_" + loadImmClassName(False, True, False, 1), 28512752Sodanrc@yahoo.com.br "pld_isub" : "PLD_" + loadImmClassName(False, False, False, 1), 28612752Sodanrc@yahoo.com.br "pldw_iadd" : "PLDW_" + loadImmClassName(False, True, False, 1), 28712752Sodanrc@yahoo.com.br "pldw_isub" : "PLDW_" + loadImmClassName(False, False, False, 1), 28812752Sodanrc@yahoo.com.br "pli_radd" : "PLI_" + loadRegClassName(False, True, False, 1), 28912752Sodanrc@yahoo.com.br "pli_rsub" : "PLI_" + loadRegClassName(False, False, False, 1), 29012752Sodanrc@yahoo.com.br "pld_radd" : "PLD_" + loadRegClassName(False, True, False, 1), 29112752Sodanrc@yahoo.com.br "pld_rsub" : "PLD_" + loadRegClassName(False, False, False, 1), 29212752Sodanrc@yahoo.com.br "pldw_radd" : "PLDW_" + loadRegClassName(False, True, False, 1), 29312752Sodanrc@yahoo.com.br "pldw_rsub" : "PLDW_" + loadRegClassName(False, False, False, 1), 29412752Sodanrc@yahoo.com.br "rfe" : "RFE_" + loadImmClassName(True, False, False, 8), 29512752Sodanrc@yahoo.com.br "rfe_w" : "RFE_" + loadImmClassName(True, False, True, 8), 29612752Sodanrc@yahoo.com.br "rfe_u" : "RFE_" + loadImmClassName(True, True, False, 8), 29712752Sodanrc@yahoo.com.br "rfe_uw" : "RFE_" + loadImmClassName(True, True, True, 8), 29812752Sodanrc@yahoo.com.br "rfe_p" : "RFE_" + loadImmClassName(False, False, False, 8), 29912752Sodanrc@yahoo.com.br "rfe_pw" : "RFE_" + loadImmClassName(False, False, True, 8), 30012752Sodanrc@yahoo.com.br "rfe_pu" : "RFE_" + loadImmClassName(False, True, False, 8), 30112756Snikos.nikoleris@arm.com "rfe_puw" : "RFE_" + loadImmClassName(False, True, True, 8), 30212752Sodanrc@yahoo.com.br "srs" : "SRS_" + storeImmClassName(True, False, False, 8), 30312752Sodanrc@yahoo.com.br "srs_w" : "SRS_" + storeImmClassName(True, False, True, 8), 30412752Sodanrc@yahoo.com.br "srs_u" : "SRS_" + storeImmClassName(True, True, False, 8), 30512752Sodanrc@yahoo.com.br "srs_uw" : "SRS_" + storeImmClassName(True, True, True, 8), 30612752Sodanrc@yahoo.com.br "srs_p" : "SRS_" + storeImmClassName(False, False, False, 8), 30712752Sodanrc@yahoo.com.br "srs_pw" : "SRS_" + storeImmClassName(False, False, True, 8), 30812752Sodanrc@yahoo.com.br "srs_pu" : "SRS_" + storeImmClassName(False, True, False, 8), 30912752Sodanrc@yahoo.com.br "srs_puw" : "SRS_" + storeImmClassName(False, True, True, 8) 31012752Sodanrc@yahoo.com.br }; 31112752Sodanrc@yahoo.com.br}}; 31212752Sodanrc@yahoo.com.br