//----------------------------------------------------------------------------------------------------------------------
//********************************************************************************************************************************
//********************************************************************************************************************************
//********************************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------------
CRC32_Posix_Continental:
//----------------------------------------------------------------------------------------------------------------------
prepare {r29, lp}, 0
//----------------------------------------------------------------------------------------------------------------------
mov 0xFEDD4000, r10
mov 0x03, r9
st.b r9, 0[r10]
mov 0xFF, r9
st.b r9, 1[r10]
mov 0x00, r9
st.b r9, 2[r10]
mov 0x02, r9
st.b r9, 3[r10]
mov 0x5A, r9
st.b r9, 4[r10]
mov 0xFE, r9
st.b r9, 5[r10]
mov 0x01, r9
st.b r9, 6[r10]
mov 0xFF, r9
st.b r9, 7[r10]
nop
//----------------------------------------------------------------------------------------------------------------------
mov 0xFEDD4000, r6 // = r6 = ep
nop
mov 8, r7
nop
mov 0xFFFFFFFF, r8 // = 0xFFFFFFFF innit crc // r8 = CRC32_Posix_Continental
jarl sub_DDFE0, lp //-- CRC32_Posix_Continental
//----------------------------------------------------------------------------------------------------------------------
dispose 0, {r29, lp}, [lp]
//----------------------------------------------------------------------------------------------------------------------
//********************************************************************************************************************************
//********************************************************************************************************************************
//********************************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
//********************************************************************************************************************************
//********************************************************************************************************************************
//********************************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------------
// -- =============== S U B R O U T I N E =======================================
//----------------------------------------------------------------------------------------------------------------------
// CRC32_Posix_Continental
//----------------------------------------------------------------------------------------------------------------------
sub_DDFE0: //-- CODE XREF: sub_BF924+DC?p
//----------------------------------------------------------------------------------------------------------------------
//-- sub_BF924+128?p ...
mov r6, ep //-- FEDD4000 = r6 = ep = 03 FF 00 02 5A FE 01 FF
cmp r0, r7 //-- r7 = 8
bz loc_DE0E0
br loc_DE056
//----------------------------------------------------------------------------------------------------------------------
loc_DDFE8: //-- CODE XREF: sub_DDFE0+78?j
sld.bu 0[ep], r1 // sld.bu [ep], r1 // 0 = 03 // 1 = FF // 2 = 00 // 3 = 02 // 4 = 5A // 5 = FE // 6 = 01 // 7 = FF
andi 0xF0, r1, r2
zxb r2
sar 4, r2 // r2 >> 0x04
zxb r2
andi 0x0F, r1, r1
zxb r1
shl 4, r1 // r1 << 0x04
zxb r1
or r2, r1
zxb r1 // byte0 = 0x30 // byte1 = 0xFF // byte2 = 0x00 // byte3 = 0x20 // byte4 = 0x5A // byte5 = 0xEF // byte6 = 0x10 // byte7 = 0xFF
//----------------------------------------------------------------------------------------------------------------------
andi 0xCC, r1, r2
zxb r2
sar 2, r2 // r2 >> 0x02
zxb r2
andi 0x33, r1, r1
zxb r1
shl 2, r1 // r1 << 0x02
zxb r1
or r2, r1
zxb r1 // byte0 = 0xC0 // byte1 = 0xFF // byte2 = 0x00 // byte3 = 0x80 // byte4 = 0xA5 // byte5 = 0xBF // byte6 = 0x40 // byte7 = 0xFF
//----------------------------------------------------------------------------------------------------------------------
andi 0xAA, r1, r2
zxb r2
sar 1, r2 // r2 >> 0x01
zxb r2
andi 0x55, r1, r1
zxb r1
shl 1, r1 // r1 << 0x01
zxb r1
or r2, r1
zxb r1 // byte0 = 0xC0 // byte1 = 0xFF // byte2 = 0x00 // byte3 = 0x40 // byte4 = 0x5A // byte5 = 0x7F // byte6 = 0x80 // byte7 = 0xFF
//----------------------------------------------------------------------------------------------------------------------
mov r8, r2 // r8 = CRC32_Posix_Continental // r2 = byte0 = 0xFFFFFFFF // byte1 = 0x13822F2D // byte2 = 0x728A901D // byte3 = 0x63A63B89 // byte4 = 0x335B1939 // byte5 = 0xD5750F98 // byte6 = 0xABAA18D8 // byte7 = 0x1970A581
shr 0x18, r2 // r2 >> 0x18
zxb r2
xor r1, r2
mov r2, r1 // index0 = 3F Dwords // index1 = EC Dwords// index2 = 72 Dwords// index3 = 23 Dwords// index4 = 69 Dwords// index5 = AA Dwords// index6 = 2B Dwords// index7 = E6 Dwords
//----------------------------------------------------------------------------------------------------------------------
shl 2, r1 // r1 << 0x02 // = index0 FC bytes // index1 3B0 bytes // index2 1C8 bytes // index3 8C bytes = // index4 1A4 bytes // index5 2A8 bytes // index6 AC bytes // index7 398 bytes
mov Crc32_Table_Posix_Dwords, r2 //-- Crc32_Table Crc32_Posix // index0 = FC bytes // index1 = 3B0 bytes // index2 = 1C8 bytes // index3 = 8C bytes // index4 = 1A4 bytes // index5 = 2A8 bytes // index6 = AC bytes // index7 = 398 bytes
add r2, r1
ld.w 0[r1], r1 // index0 FC bytes = 0xEC7DD02D // index1 3B0 bytes = 0xF0A5BD1D // index2 1C8 bytes = 0xE9362689 // index3 8C bytes = 0x95609039 // index4 1A4 bytes = 0x8E6C3698 // index5 2A8 bytes = 0xDEA580D8 // index6 AC bytes = 0xB3687D81 // index7 398 bytes = 0xBF2F6BCB
//----------------------------------------------------------------------------------------------------------------------
mov r8, r2 // r8 = CRC32_Posix_Continental // r2 = byte0 = 0xFFFFFFFF // byte1 = 0x13822F2D // byte2 = 0x728A901D // byte3 = 0x63A63B89 // byte4 = 0x335B1939 // byte5 = 0xD5750F98 // byte6 = 0xABAA18D8 // byte7 = 0x1970A581
shl 8, r2 // r2 << 0x08
mov r2, r8 // r8 = CRC32_Posix_Continental
xor r1, r8 // r8 = CRC32_Posix_Continental // byte0 r8 = 0x13822F2D// byte1 = 0x728A901D// byte2 = 0x63A63B89 // byte3 = 0x335B1939 // byte4 = 0xD5750F98 // byte5 = 0xABAA18D8 // byte6 = 0x1970A581 // byte7 = 0xAF8AEACB = resultat
//----------------------------------------------------------------------------------------------------------------------
add 1, ep // r8 = CRC32_Posix_Continental // byte7 = 0xAF8AEACB = resultat
add -1, r7
//----------------------------------------------------------------------------------------------------------------------
loc_DE056: //-- CODE XREF: sub_DDFE0+6?j
cmp r0, r7
bnz loc_DDFE8
//----------------------------------------------------------------------------------------------------------------------
mov 0xFFFF0000, r2
mov r8, r1 // r8 = CRC32_Posix_Continental
and r2, r1
shr 0x10, r1 // r1 >> 0x10
mov 0x0000FFFF, r5
mov r8, r2 // r8 = CRC32_Posix_Continental
and r5, r2
shl 0x10, r2 // r2 << 0x10
mov r2, r8 // r8 = CRC32_Posix_Continental
or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xEACBAF8A
//----------------------------------------------------------------------------------------------------------------------
mov 0xFF00FF00, r2
mov r8, r1
and r2, r1
shr 8, r1 // r1 >> 0x08
mov 0x00FF00FF, r5
mov r8, r2 // r8 = CRC32_Posix_Continental
and r5, r2
shl 8, r2 // r2 << 0x08
mov r2, r8 // r8 = CRC32_Posix_Continental
or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xCBEA8AAF
//----------------------------------------------------------------------------------------------------------------------
mov 0xF0F0F0F0, r2
mov r8, r1 // r8 = CRC32_Posix_Continental
and r2, r1
shr 4, r1 // r1 >> 0x04
mov 0x0F0F0F0F, r5
mov r8, r2 // r8 = CRC32_Posix_Continental
and r5, r2
shl 4, r2 // r2 << 0x04
mov r2, r8 // r8 = CRC32_Posix_Continental
or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xBCAEA8FA
//----------------------------------------------------------------------------------------------------------------------
mov 0xCCCCCCCC, r2
mov r8, r1 // r8 = CRC32_Posix_Continental
and r2, r1
shr 2, r1 // r1 >> 0x02
mov 0x33333333, r5
mov r8, r2
and r5, r2
shl 2, r2 // r2 << 0x02
mov r2, r8 // r8 = CRC32_Posix_Continental
or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xE3ABA2FA
//----------------------------------------------------------------------------------------------------------------------
mov 0xAAAAAAAA, r2
mov r8, r1 // r8 = CRC32_Posix_Continental
and r2, r1
shr 1, r1 // r1 >> 0x01
mov 0x55555555, r5
mov r8, r2
and r5, r2
shl 1, r2 // r2 << 0x01
mov r2, r8 // r8 = CRC32_Posix_Continental
or r1, r8 // r8 = CRC32_Posix_Continental // R8 = 0xD35751F5
//----------------------------------------------------------------------------------------------------------------------
not r8, r8 // r8 = CRC32_Posix_Continental // R8 = 0x2CA8AE0A
//----------------------------------------------------------------------------------------------------------------------
loc_DE0E0: //-- CODE XREF: sub_DDFE0+4?j
mov r8, r10 // R10 = 0x2CA8AE0A
jmp [lp] // 0A AE A8 2C Bytes
// -- End of function sub_DDFE0
//----------------------------------------------------------------------------------------------------------------------
//********************************************************************************************************************************
//********************************************************************************************************************************
//********************************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
//********************************************************************************************************************************
//********************************************************************************************************************************
//********************************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------------
Crc32_Table_Posix_Dwords:
//--------------------------------------------------------------------------------------------------
DW 0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, 0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005
DW 0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61, 0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD
DW 0x4C11DB70, 0x48D0C6C7, 0x4593E01E, 0x4152FDA9, 0x5F15ADAC, 0x5BD4B01B, 0x569796C2, 0x52568B75
DW 0x6A1936C8, 0x6ED82B7F, 0x639B0DA6, 0x675A1011, 0x791D4014, 0x7DDC5DA3, 0x709F7B7A, 0x745E66CD
DW 0x9823B6E0, 0x9CE2AB57, 0x91A18D8E, 0x95609039, 0x8B27C03C, 0x8FE6DD8B, 0x82A5FB52, 0x8664E6E5
DW 0xBE2B5B58, 0xBAEA46EF, 0xB7A96036, 0xB3687D81, 0xAD2F2D84, 0xA9EE3033, 0xA4AD16EA, 0xA06C0B5D
DW 0xD4326D90, 0xD0F37027, 0xDDB056FE, 0xD9714B49, 0xC7361B4C, 0xC3F706FB, 0xCEB42022, 0xCA753D95
DW 0xF23A8028, 0xF6FB9D9F, 0xFBB8BB46, 0xFF79A6F1, 0xE13EF6F4, 0xE5FFEB43, 0xE8BCCD9A, 0xEC7DD02D
DW 0x34867077, 0x30476DC0, 0x3D044B19, 0x39C556AE, 0x278206AB, 0x23431B1C, 0x2E003DC5, 0x2AC12072
DW 0x128E9DCF, 0x164F8078, 0x1B0CA6A1, 0x1FCDBB16, 0x018AEB13, 0x054BF6A4, 0x0808D07D, 0x0CC9CDCA
DW 0x7897AB07, 0x7C56B6B0, 0x71159069, 0x75D48DDE, 0x6B93DDDB, 0x6F52C06C, 0x6211E6B5, 0x66D0FB02
DW 0x5E9F46BF, 0x5A5E5B08, 0x571D7DD1, 0x53DC6066, 0x4D9B3063, 0x495A2DD4, 0x44190B0D, 0x40D816BA
DW 0xACA5C697, 0xA864DB20, 0xA527FDF9, 0xA1E6E04E, 0xBFA1B04B, 0xBB60ADFC, 0xB6238B25, 0xB2E29692
DW 0x8AAD2B2F, 0x8E6C3698, 0x832F1041, 0x87EE0DF6, 0x99A95DF3, 0x9D684044, 0x902B669D, 0x94EA7B2A
DW 0xE0B41DE7, 0xE4750050, 0xE9362689, 0xEDF73B3E, 0xF3B06B3B, 0xF771768C, 0xFA325055, 0xFEF34DE2
DW 0xC6BCF05F, 0xC27DEDE8, 0xCF3ECB31, 0xCBFFD686, 0xD5B88683, 0xD1799B34, 0xDC3ABDED, 0xD8FBA05A
DW 0x690CE0EE, 0x6DCDFD59, 0x608EDB80, 0x644FC637, 0x7A089632, 0x7EC98B85, 0x738AAD5C, 0x774BB0EB
DW 0x4F040D56, 0x4BC510E1, 0x46863638, 0x42472B8F, 0x5C007B8A, 0x58C1663D, 0x558240E4, 0x51435D53
DW 0x251D3B9E, 0x21DC2629, 0x2C9F00F0, 0x285E1D47, 0x36194D42, 0x32D850F5, 0x3F9B762C, 0x3B5A6B9B
DW 0x0315D626, 0x07D4CB91, 0x0A97ED48, 0x0E56F0FF, 0x1011A0FA, 0x14D0BD4D, 0x19939B94, 0x1D528623
DW 0xF12F560E, 0xF5EE4BB9, 0xF8AD6D60, 0xFC6C70D7, 0xE22B20D2, 0xE6EA3D65, 0xEBA91BBC, 0xEF68060B
DW 0xD727BBB6, 0xD3E6A601, 0xDEA580D8, 0xDA649D6F, 0xC423CD6A, 0xC0E2D0DD, 0xCDA1F604, 0xC960EBB3
DW 0xBD3E8D7E, 0xB9FF90C9, 0xB4BCB610, 0xB07DABA7, 0xAE3AFBA2, 0xAAFBE615, 0xA7B8C0CC, 0xA379DD7B
DW 0x9B3660C6, 0x9FF77D71, 0x92B45BA8, 0x9675461F, 0x8832161A, 0x8CF30BAD, 0x81B02D74, 0x857130C3
DW 0x5D8A9099, 0x594B8D2E, 0x5408ABF7, 0x50C9B640, 0x4E8EE645, 0x4A4FFBF2, 0x470CDD2B, 0x43CDC09C
DW 0x7B827D21, 0x7F436096, 0x7200464F, 0x76C15BF8, 0x68860BFD, 0x6C47164A, 0x61043093, 0x65C52D24
DW 0x119B4BE9, 0x155A565E, 0x18197087, 0x1CD86D30, 0x029F3D35, 0x065E2082, 0x0B1D065B, 0x0FDC1BEC
DW 0x3793A651, 0x3352BBE6, 0x3E119D3F, 0x3AD08088, 0x2497D08D, 0x2056CD3A, 0x2D15EBE3, 0x29D4F654
DW 0xC5A92679, 0xC1683BCE, 0xCC2B1D17, 0xC8EA00A0, 0xD6AD50A5, 0xD26C4D12, 0xDF2F6BCB, 0xDBEE767C
DW 0xE3A1CBC1, 0xE760D676, 0xEA23F0AF, 0xEEE2ED18, 0xF0A5BD1D, 0xF464A0AA, 0xF9278673, 0xFDE69BC4
DW 0x89B8FD09, 0x8D79E0BE, 0x803AC667, 0x84FBDBD0, 0x9ABC8BD5, 0x9E7D9662, 0x933EB0BB, 0x97FFAD0C
DW 0xAFB010B1, 0xAB710D06, 0xA6322BDF, 0xA2F33668, 0xBCB4666D, 0xB8757BDA, 0xB5365D03, 0xB1F740B4
//----------------------------------------------------------------------------------------------------------------------
//********************************************************************************************************************************
//********************************************************************************************************************************
//********************************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------------
-
- Чем щиток расковыряли, IDA ? - Ralex(06.02.2025 17:04)
- да, IDA PRO 9SP1. - avcel(06.02.2025 18:36)
- спасибо - Ralex(07.02.2025 14:04)
- да, IDA PRO 9SP1. - avcel(06.02.2025 18:36)
- Чем щиток расковыряли, IDA ? - Ralex(06.02.2025 17:04)