0000 : 03741102 : lw s1, IV2 0001 : 03671101 : lw s2, IV1 0002 : 03681100 : lw s3, IV0 0003 : 06696800 : mv s4, s3 0004 : 06016800 : mv a0, s3 0005 : 39000C01 : call sub_hash 0006 : 06690100 : mv s4, a0 0007 : 06016900 : mv a0, s4 0008 : 39000C01 : call sub_hash 0009 : 06690100 : mv s4, a0 000A : 10747469 : xor s1, s1, s4 000B : 06647400 : mv s8, s1 000C : 0B640010 : srli s8, 16 000D : 0D6400FF : andi s8, 0x00FF 000E : 06657400 : mv s9, s1 000F : 0B650008 : srli s9, 8 0010 : 0D6500FF : andi s9, 0x00FF 0011 : 06667400 : mv s10, s1 0012 : 0B660000 : srli s10, 0 0013 : 0D6600FF : andi s10, 0x00FF 0014 : 06016900 : mv a0, s4 0015 : 39000C01 : call sub_hash 0016 : 06690100 : mv s4, a0 0017 : 10676769 : xor s2, s2, s4 0018 : 05671208 : sw s2, IMM 0019 : 076D1200 : li s11, 0x1200 001A : 06016D00 : mv a0, s11 001B : 1C010165 : add a0, a0, s9 001C : 026A0100 : lw s5, 0(a0) 001D : 06016D00 : mv a0, s11 001E : 1C010166 : add a0, a0, s10 001F : 026B0100 : lw s6, 0(a0) 0020 : 06016D00 : mv a0, s11 0021 : 1D010009 : addi a0, 0x0009 0022 : 026E0100 : lw s7, 0(a0) 0023 : 06016A00 : mv a0, s5 0024 : 06026B00 : mv a1, s6 0025 : 06036E00 : mv a2, s7 0026 : 06046400 : mv a3, s8 0027 : 2704000D : seqi a3, 0x000D 0028 : 37040C80 : bnez a3, sub_TEST_x_x 0029 : 06046400 : mv a3, s8 002A : 2704000E : seqi a3, 0x000E 002B : 37040C90 : bnez a3, sub_AND_r_x 002C : 06046400 : mv a3, s8 002D : 2704000F : seqi a3, 0x000F 002E : 37040CA0 : bnez a3, sub_XOR_r_x 002F : 06046400 : mv a3, s8 0030 : 27040010 : seqi a3, 0x0010 0031 : 37040CD0 : bnez a3, sub_OR_r_x 0032 : 06046400 : mv a3, s8 0033 : 27040013 : seqi a3, 0x0013 0034 : 37040CE0 : bnez a3, sub_ADD_r_x 0035 : 06046400 : mv a3, s8 0036 : 27040012 : seqi a3, 0x0012 0037 : 37040CB0 : bnez a3, sub_SUB_r_x 0038 : 06046400 : mv a3, s8 0039 : 27040011 : seqi a3, 0x0011 003A : 37040CC0 : bnez a3, sub_CMP_r_x 003B : 06046400 : mv a3, s8 003C : 27040003 : seqi a3, 0x0003 003D : 37040C10 : bnez a3, sub_JE_rel 003E : 06046400 : mv a3, s8 003F : 27040004 : seqi a3, 0x0004 0040 : 37040C18 : bnez a3, sub_JNE_rel 0041 : 06046400 : mv a3, s8 0042 : 27040005 : seqi a3, 0x0005 0043 : 37040C20 : bnez a3, sub_JB_rel 0044 : 06046400 : mv a3, s8 0045 : 27040006 : seqi a3, 0x0006 0046 : 37040C28 : bnez a3, sub_JAE_rel 0047 : 06046400 : mv a3, s8 0048 : 27040007 : seqi a3, 0x0007 0049 : 37040C30 : bnez a3, sub_JO_rel 004A : 06046400 : mv a3, s8 004B : 27040008 : seqi a3, 0x0008 004C : 37040C38 : bnez a3, sub_JNO_rel 004D : 06046400 : mv a3, s8 004E : 27040009 : seqi a3, 0x0009 004F : 37040C40 : bnez a3, sub_JP_rel 0050 : 06046400 : mv a3, s8 0051 : 2704000A : seqi a3, 0x000A 0052 : 37040C48 : bnez a3, sub_JNP_rel 0053 : 06046400 : mv a3, s8 0054 : 2704000B : seqi a3, 0x000B 0055 : 37040C44 : bnez a3, sub_JS_rel 0056 : 06046400 : mv a3, s8 0057 : 2704000C : seqi a3, 0x000C 0058 : 37040C4C : bnez a3, sub_JNS_rel 0059 : 06046400 : mv a3, s8 005A : 27040001 : seqi a3, 0x0001 005B : 37040C50 : bnez a3, sub_JMP_rel 005C : 06046400 : mv a3, s8 005D : 27040002 : seqi a3, 0x0002 005E : 37040C54 : bnez a3, sub_CALL 005F : 06046400 : mv a3, s8 0060 : 27040000 : seqi a3, 0x0000 0061 : 37040C58 : bnez a3, sub_MOV_r_x_JMP_abs 0062 : 066A0100 : mv s5, a0 0063 : 066B0200 : mv s6, a1 0064 : 066E0300 : mv s7, a2 0065 : 06016D00 : mv a0, s11 0066 : 1C010166 : add a0, a0, s10 0067 : 046B0100 : sw s6, 0(a0) 0068 : 06016D00 : mv a0, s11 0069 : 1C010165 : add a0, a0, s9 006A : 046A0100 : sw s5, 0(a0) 006B : 06016D00 : mv a0, s11 006C : 1D010009 : addi a0, 0x0009 006D : 046E0100 : sw s7, 0(a0) 006E : 3A000000 : ret sub_TEST_x_x: 006F : 0673FD00 : mv t0, ra 0070 : 0C040102 : and a3, a0, a1 0071 : 06050400 : mv a4, a3 0072 : 15030007 : bseti a2, 7 0073 : 1905001F : bexti a4, 31 0074 : 37050C81 : bnez a4, 0x0076 0075 : 17030007 : bclri a2, 7 0076 : 06050400 : mv a4, a3 0077 : 15030006 : bseti a2, 6 0078 : 27050000 : seqi a4, 0x0000 0079 : 37050C82 : bnez a4, 0x007B 007A : 17030006 : bclri a2, 6 007B : 07060001 : li a5, 0x0001 007C : 07070008 : li a6, 0x0008 007D : 1F070001 : subi a6, 0x0001 007E : 06050400 : mv a4, a3 007F : 0A050507 : srl a4, a4, a6 0080 : 0D050001 : andi a4, 0x0001 0081 : 12060506 : binv a5, a4, a5 0082 : 0D060001 : andi a5, 0x0001 0083 : 26090700 : seq a7, a6, zero 0084 : 39090C83 : beqz a7, 0x007D 0085 : 06050600 : mv a4, a5 0086 : 27050000 : seqi a4, 0x0000 0087 : 37050C84 : bnez a4, 0x0089 0088 : 15030002 : bseti a2, 2 0089 : 1703000B : bclri a2, 11 008A : 17030000 : bclri a2, 0 008B : 38007300 : rts sub_AND_r_x: 008C : 0673FD00 : mv t0, ra 008D : 0C040102 : and a3, a0, a1 008E : 06050400 : mv a4, a3 008F : 15030007 : bseti a2, 7 0090 : 1905001F : bexti a4, 31 0091 : 37050C91 : bnez a4, 0x0093 0092 : 17030007 : bclri a2, 7 0093 : 06050400 : mv a4, a3 0094 : 15030006 : bseti a2, 6 0095 : 27050000 : seqi a4, 0x0000 0096 : 37050C92 : bnez a4, 0x0098 0097 : 17030006 : bclri a2, 6 0098 : 07060001 : li a5, 0x0001 0099 : 07070008 : li a6, 0x0008 009A : 1F070001 : subi a6, 0x0001 009B : 06050400 : mv a4, a3 009C : 0A050507 : srl a4, a4, a6 009D : 0D050001 : andi a4, 0x0001 009E : 12060506 : binv a5, a4, a5 009F : 0D060001 : andi a5, 0x0001 00A0 : 26090700 : seq a7, a6, zero 00A1 : 39090C93 : beqz a7, 0x009A 00A2 : 06050600 : mv a4, a5 00A3 : 27050000 : seqi a4, 0x0000 00A4 : 37050C94 : bnez a4, 0x00A6 00A5 : 15030002 : bseti a2, 2 00A6 : 1703000B : bclri a2, 11 00A7 : 17030000 : bclri a2, 0 00A8 : 06010400 : mv a0, a3 00A9 : 38007300 : rts sub_XOR_r_x: 00AA : 0673FD00 : mv t0, ra 00AB : 10040102 : xor a3, a0, a1 00AC : 06050400 : mv a4, a3 00AD : 15030007 : bseti a2, 7 00AE : 1905001F : bexti a4, 31 00AF : 37050CA1 : bnez a4, 0x00B1 00B0 : 17030007 : bclri a2, 7 00B1 : 06050400 : mv a4, a3 00B2 : 15030006 : bseti a2, 6 00B3 : 27050000 : seqi a4, 0x0000 00B4 : 37050CA2 : bnez a4, 0x00B6 00B5 : 17030006 : bclri a2, 6 00B6 : 07060001 : li a5, 0x0001 00B7 : 07070008 : li a6, 0x0008 00B8 : 1F070001 : subi a6, 0x0001 00B9 : 06050400 : mv a4, a3 00BA : 0A050507 : srl a4, a4, a6 00BB : 0D050001 : andi a4, 0x0001 00BC : 12060506 : binv a5, a4, a5 00BD : 0D060001 : andi a5, 0x0001 00BE : 26090700 : seq a7, a6, zero 00BF : 39090CA3 : beqz a7, 0x00B8 00C0 : 06050600 : mv a4, a5 00C1 : 27050000 : seqi a4, 0x0000 00C2 : 37050CA4 : bnez a4, 0x00C4 00C3 : 15030002 : bseti a2, 2 00C4 : 1703000B : bclri a2, 11 00C5 : 17030000 : bclri a2, 0 00C6 : 06010400 : mv a0, a3 00C7 : 38007300 : rts sub_OR_r_x: 00C8 : 0673FD00 : mv t0, ra 00C9 : 0E040102 : or a3, a0, a1 00CA : 06050400 : mv a4, a3 00CB : 15030007 : bseti a2, 7 00CC : 1905001F : bexti a4, 31 00CD : 37050CD1 : bnez a4, 0x00CF 00CE : 17030007 : bclri a2, 7 00CF : 06050400 : mv a4, a3 00D0 : 15030006 : bseti a2, 6 00D1 : 27050000 : seqi a4, 0x0000 00D2 : 37050CD2 : bnez a4, 0x00D4 00D3 : 17030006 : bclri a2, 6 00D4 : 07060001 : li a5, 0x0001 00D5 : 07070008 : li a6, 0x0008 00D6 : 1F070001 : subi a6, 0x0001 00D7 : 06050400 : mv a4, a3 00D8 : 0A050507 : srl a4, a4, a6 00D9 : 0D050001 : andi a4, 0x0001 00DA : 12060506 : binv a5, a4, a5 00DB : 0D060001 : andi a5, 0x0001 00DC : 26090700 : seq a7, a6, zero 00DD : 39090CD3 : beqz a7, 0x00D6 00DE : 06050600 : mv a4, a5 00DF : 27050000 : seqi a4, 0x0000 00E0 : 37050CD4 : bnez a4, 0x00E2 00E1 : 15030002 : bseti a2, 2 00E2 : 1703000B : bclri a2, 11 00E3 : 17030000 : bclri a2, 0 00E4 : 06010400 : mv a0, a3 00E5 : 38007300 : rts sub_ADD_r_x: 00E6 : 0673FD00 : mv t0, ra 00E7 : 1C040102 : add a3, a0, a1 00E8 : 06050400 : mv a4, a3 00E9 : 15030007 : bseti a2, 7 00EA : 1905001F : bexti a4, 31 00EB : 37050CE1 : bnez a4, 0x00ED 00EC : 17030007 : bclri a2, 7 00ED : 06050400 : mv a4, a3 00EE : 15030006 : bseti a2, 6 00EF : 27050000 : seqi a4, 0x0000 00F0 : 37050CE2 : bnez a4, 0x00F2 00F1 : 17030006 : bclri a2, 6 00F2 : 07060001 : li a5, 0x0001 00F3 : 07070008 : li a6, 0x0008 00F4 : 1F070001 : subi a6, 0x0001 00F5 : 06050400 : mv a4, a3 00F6 : 0A050507 : srl a4, a4, a6 00F7 : 0D050001 : andi a4, 0x0001 00F8 : 12060506 : binv a5, a4, a5 00F9 : 0D060001 : andi a5, 0x0001 00FA : 26090700 : seq a7, a6, zero 00FB : 39090CE3 : beqz a7, 0x00F4 00FC : 06050600 : mv a4, a5 00FD : 27050000 : seqi a4, 0x0000 00FE : 37050CE4 : bnez a4, 0x0100 00FF : 15030002 : bseti a2, 2 0100 : 1503000B : bseti a2, 11 0101 : 2E050102 : sofadd a4, a0, a1 0102 : 37050CE5 : bnez a4, 0x0104 0103 : 1703000B : bclri a2, 11 0104 : 15030000 : bseti a2, 0 0105 : 30050102 : scfadd a4, a0, a1 0106 : 37050CE6 : bnez a4, 0x0108 0107 : 17030000 : bclri a2, 0 0108 : 15030004 : bseti a2, 4 0109 : 32050102 : safadd a4, a0, a1 010A : 37050CE7 : bnez a4, 0x010C 010B : 17030004 : bclri a2, 4 010C : 06010400 : mv a0, a3 010D : 38007300 : rts sub_SUB_r_x: 010E : 0673FD00 : mv t0, ra 010F : 1E040102 : sub a3, a0, a1 0110 : 06050400 : mv a4, a3 0111 : 15030007 : bseti a2, 7 0112 : 1905001F : bexti a4, 31 0113 : 37050CB1 : bnez a4, 0x0115 0114 : 17030007 : bclri a2, 7 0115 : 06050400 : mv a4, a3 0116 : 15030006 : bseti a2, 6 0117 : 27050000 : seqi a4, 0x0000 0118 : 37050CB2 : bnez a4, 0x011A 0119 : 17030006 : bclri a2, 6 011A : 07060001 : li a5, 0x0001 011B : 07070008 : li a6, 0x0008 011C : 1F070001 : subi a6, 0x0001 011D : 06050400 : mv a4, a3 011E : 0A050507 : srl a4, a4, a6 011F : 0D050001 : andi a4, 0x0001 0120 : 12060506 : binv a5, a4, a5 0121 : 0D060001 : andi a5, 0x0001 0122 : 26090700 : seq a7, a6, zero 0123 : 39090CB3 : beqz a7, 0x011C 0124 : 06050600 : mv a4, a5 0125 : 27050000 : seqi a4, 0x0000 0126 : 37050CB4 : bnez a4, 0x0128 0127 : 15030002 : bseti a2, 2 0128 : 1503000B : bseti a2, 11 0129 : 2A050102 : sofsub a4, a0, a1 012A : 37050CB5 : bnez a4, 0x012C 012B : 1703000B : bclri a2, 11 012C : 15030000 : bseti a2, 0 012D : 2C050102 : scfsub a4, a0, a1 012E : 37050CB6 : bnez a4, 0x0130 012F : 17030000 : bclri a2, 0 0130 : 15030004 : bseti a2, 4 0131 : 34050102 : safsub a4, a0, a1 0132 : 37050CB7 : bnez a4, 0x0134 0133 : 17030004 : bclri a2, 4 0134 : 06010400 : mv a0, a3 0135 : 38007300 : rts sub_CMP_r_x: 0136 : 0673FD00 : mv t0, ra 0137 : 1E040102 : sub a3, a0, a1 0138 : 06050400 : mv a4, a3 0139 : 15030007 : bseti a2, 7 013A : 1905001F : bexti a4, 31 013B : 37050CC1 : bnez a4, 0x013D 013C : 17030007 : bclri a2, 7 013D : 06050400 : mv a4, a3 013E : 15030006 : bseti a2, 6 013F : 27050000 : seqi a4, 0x0000 0140 : 37050CC2 : bnez a4, 0x0142 0141 : 17030006 : bclri a2, 6 0142 : 07060001 : li a5, 0x0001 0143 : 07070008 : li a6, 0x0008 0144 : 1F070001 : subi a6, 0x0001 0145 : 06050400 : mv a4, a3 0146 : 0A050507 : srl a4, a4, a6 0147 : 0D050001 : andi a4, 0x0001 0148 : 12060506 : binv a5, a4, a5 0149 : 0D060001 : andi a5, 0x0001 014A : 26090700 : seq a7, a6, zero 014B : 39090CC3 : beqz a7, 0x0144 014C : 06050600 : mv a4, a5 014D : 27050000 : seqi a4, 0x0000 014E : 37050CC4 : bnez a4, 0x0150 014F : 15030002 : bseti a2, 2 0150 : 1503000B : bseti a2, 11 0151 : 2A050102 : sofsub a4, a0, a1 0152 : 37050CC5 : bnez a4, 0x0154 0153 : 1703000B : bclri a2, 11 0154 : 15030000 : bseti a2, 0 0155 : 2C050102 : scfsub a4, a0, a1 0156 : 37050CC6 : bnez a4, 0x0158 0157 : 17030000 : bclri a2, 0 0158 : 15030004 : bseti a2, 4 0159 : 34050102 : safsub a4, a0, a1 015A : 37050CC7 : bnez a4, 0x015C 015B : 17030004 : bclri a2, 4 015C : 38007300 : rts sub_MOV_r_x_JMP_abs: 015D : 0673FD00 : mv t0, ra 015E : 06010200 : mv a0, a1 015F : 38007300 : rts sub_JMP_rel: 0160 : 0673FD00 : mv t0, ra 0161 : 1C010102 : add a0, a0, a1 0162 : 38007300 : rts sub_JE_rel: 0163 : 0673FD00 : mv t0, ra 0164 : 06050300 : mv a4, a2 0165 : 19050006 : bexti a4, 6 0166 : 39050C11 : beqz a4, 0x0168 0167 : 1C010102 : add a0, a0, a1 0168 : 38007300 : rts sub_JNE_rel: 0169 : 0673FD00 : mv t0, ra 016A : 06050300 : mv a4, a2 016B : 19050006 : bexti a4, 6 016C : 37050C19 : bnez a4, 0x016E 016D : 1C010102 : add a0, a0, a1 016E : 38007300 : rts sub_JB_rel: 016F : 0673FD00 : mv t0, ra 0170 : 06050300 : mv a4, a2 0171 : 19050000 : bexti a4, 0 0172 : 39050C21 : beqz a4, 0x0174 0173 : 1C010102 : add a0, a0, a1 0174 : 38007300 : rts sub_JAE_rel: 0175 : 0673FD00 : mv t0, ra 0176 : 06050300 : mv a4, a2 0177 : 19050000 : bexti a4, 0 0178 : 37050C29 : bnez a4, 0x017A 0179 : 1C010102 : add a0, a0, a1 017A : 38007300 : rts sub_JO_rel: 017B : 0673FD00 : mv t0, ra 017C : 06050300 : mv a4, a2 017D : 1905000B : bexti a4, 11 017E : 39050C31 : beqz a4, 0x0180 017F : 1C010102 : add a0, a0, a1 0180 : 38007300 : rts sub_JNO_rel: 0181 : 0673FD00 : mv t0, ra 0182 : 06050300 : mv a4, a2 0183 : 1905000B : bexti a4, 11 0184 : 37050C39 : bnez a4, 0x0186 0185 : 1C010102 : add a0, a0, a1 0186 : 38007300 : rts sub_JP_rel: 0187 : 0673FD00 : mv t0, ra 0188 : 06050300 : mv a4, a2 0189 : 19050002 : bexti a4, 2 018A : 39050C41 : beqz a4, 0x018C 018B : 1C010102 : add a0, a0, a1 018C : 38007300 : rts sub_JNP_rel: 018D : 0673FD00 : mv t0, ra 018E : 06050300 : mv a4, a2 018F : 19050002 : bexti a4, 2 0190 : 37050C49 : bnez a4, 0x0192 0191 : 1C010102 : add a0, a0, a1 0192 : 38007300 : rts sub_JS_rel: 0193 : 0673FD00 : mv t0, ra 0194 : 06050300 : mv a4, a2 0195 : 19050007 : bexti a4, 7 0196 : 39050C45 : beqz a4, 0x0198 0197 : 1C010102 : add a0, a0, a1 0198 : 38007300 : rts sub_JNS_rel: 0199 : 0673FD00 : mv t0, ra 019A : 06050300 : mv a4, a2 019B : 19050007 : bexti a4, 7 019C : 37050C4D : bnez a4, 0x019E 019D : 1C010102 : add a0, a0, a1 019E : 38007300 : rts sub_CALL: 019F : 0673FD00 : mv t0, ra 01A0 : 03041204 : lw a3, ESP 01A1 : 1F040004 : subi a3, 0x0004 01A2 : 05041204 : sw a3, ESP 01A3 : 1C010102 : add a0, a0, a1 01A4 : 38007300 : rts sub_hash: 01A5 : 0673FD00 : mv t0, ra 01A6 : 076FF0F0 : li t3, 0xF0F0 01A7 : 096F0010 : slli t3, 16 01A8 : 0F6FF0F0 : ori t3, 0xF0F0 01A9 : 07700F0F : li t4, 0x0F0F 01AA : 09700010 : slli t4, 16 01AB : 0F700F0F : ori t4, 0x0F0F 01AC : 0771FFFF : li t5, 0xFFFF 01AD : 09710010 : slli t5, 16 01AE : 0F71FFFF : ori t5, 0xFFFF 01AF : 0C6C016F : and t1, a0, t3 01B0 : 10720171 : xor t6, a0, t5 01B1 : 0C727270 : and t6, t6, t4 01B2 : 0E6C6C72 : or t1, t1, t6 01B3 : 06726C00 : mv t6, t1 01B4 : 0972000F : slli t6, 15 01B5 : 10727271 : xor t6, t6, t5 01B6 : 1C6C6C72 : add t1, t1, t6 01B7 : 06726C00 : mv t6, t1 01B8 : 0B72000A : srli t6, 10 01B9 : 106C6C72 : xor t1, t1, t6 01BA : 06726C00 : mv t6, t1 01BB : 09720003 : slli t6, 3 01BC : 10727271 : xor t6, t6, t5 01BD : 1C6C6C72 : add t1, t1, t6 01BE : 06726C00 : mv t6, t1 01BF : 0B720006 : srli t6, 6 01C0 : 106C6C72 : xor t1, t1, t6 01C1 : 06726C00 : mv t6, t1 01C2 : 0972000B : slli t6, 11 01C3 : 10727271 : xor t6, t6, t5 01C4 : 1C6C6C72 : add t1, t1, t6 01C5 : 06726C00 : mv t6, t1 01C6 : 0B720010 : srli t6, 16 01C7 : 106C6C72 : xor t1, t1, t6 01C8 : 06016C00 : mv a0, t1 01C9 : 38007300 : rts