// RandomSNKey.Gender.h #pragma once //================================================================================================== #pragma warning(push) #pragma warning(disable: 4293) //================================================================================================== // #pragma pack(push, 1) union Fcode { DWORD dwVal; float fVal; struct { WORD wVal; BYTE byDummy1; BYTE byDummy2; }; }; #pragma pack(pop) // À§Àå ÄÚµå 1 inline DWORD GenderDummyCodeKey1( DWORD& rKey1, DWORD& rKey2, DWORD& rKey3 ) { Fcode fcode; fcode.dwVal = rKey1 ^ rKey2; fcode.fVal = ((float)fcode.dwVal/7.f); rKey1 = rKey2 ^ fcode.dwVal; return rKey1; } // À§Àå ÄÚµå 2 inline DWORD GenderDummyCodeKey2( DWORD& rKey1, DWORD& rKey2, DWORD& rKey3 ) { rKey1 = GenderDummyCodeKey1( rKey1, rKey2, rKey3 ); rKey2 = MAKE_SNK_RND_NEXT_KEY_BY_BASE_PAIR(rKey1, rKey2, rKey3); rKey3 = rKey1 ^ rKey2; rKey3 = (BYTE)((rKey3 ^ rKey2)>>28); rKey2 = (BYTE)((rKey2 ^ rKey1)>>24); return rKey2; } inline VOID GenderNextRound_T1( DWORD& rKey ) { #if CODE_SELECTOR_BY_VER == 0 rKey += 1; #elif CODE_SELECTOR_BY_VER == 1 rKey ^= 0x40200001; #elif CODE_SELECTOR_BY_VER == 2 rKey ^= 0x09180010; #elif CODE_SELECTOR_BY_VER == 3 #endif } inline VOID GenderNextRound_T2( DWORD& rKey ) { #if CODE_SELECTOR_BY_VER == 0 rKey += 7; #elif CODE_SELECTOR_BY_VER == 1 rKey ^= 0x00010F00; #elif CODE_SELECTOR_BY_VER == 2 rKey ^= 0x000010F0; #elif CODE_SELECTOR_BY_VER == 3 #endif } inline DWORD GenderKeyBase01( DWORD dwRndKey, DWORD dwAddKey ) { } //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // #define WV(val) (val) #define EDW(val) (WV(val).dwKEY) #define ELW(val) (WV(val).pKEYW[eSNKEY_IDX::LOWORD_IDX]) #define EHW(val) (WV(val).pKEYW[eSNKEY_IDX::HIWORD_IDX]) #define SWV(val) (1< struct sRoundUpChecker { inline BOOL CheckUp1st( DWORD dwCMPVAL ) { if( SWV(CHK1st) & dwCMPVAL ) return TRUE; return FALSE; } inline BOOL CheckUp2nd( DWORD dwCMPVAL ) { if( SWV(CHK2nd) & dwCMPVAL ) return TRUE; return FALSE; } inline BOOL CheckUp3rd( DWORD dwCMPVAL ) { #if (CATEGORY_ODD_NUMBER&SWV(4)) if( SWV(CHK3rd) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(5)) if( (SWV(CHK2nd)|SWV(CHK3rd)) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(6)) if( !(SWV(CHK3rd) & dwCMPVAL) ) #elif (CATEGORY_ODD_NUMBER&SWV(7)) if( SWV(CHK2nd) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(8)) if( !( (SWV(CHK2nd)|SWV(CHK4th)) & dwCMPVAL ) ) #elif (CATEGORY_ODD_NUMBER&SWV(9)) if( !(SWV(CHK4th) & dwCMPVAL) ) #elif (CATEGORY_ODD_NUMBER&SWV(10)) if( SWV(CHK3rd) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(11)) if( 1 ) #endif return TRUE; return FALSE; } inline BOOL CheckUp4th( DWORD dwCMPVAL ) { #if (CATEGORY_ODD_NUMBER&SWV(4)) if( SWV(CHK4th) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(5)) if( (SWV(CHK1st)|SWV(CHK4th)) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(6)) if( !(SWV(CHK4th) & dwCMPVAL) ) #elif (CATEGORY_ODD_NUMBER&SWV(7)) if( SWV(CHK2nd) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(8)) if( !( (SWV(CHK2nd)|SWV(CHK3rd)) & dwCMPVAL ) ) #elif (CATEGORY_ODD_NUMBER&SWV(9)) if( !(SWV(CHK3rd) & dwCMPVAL) ) #elif (CATEGORY_ODD_NUMBER&SWV(10)) if( SWV(CHK4th) & dwCMPVAL ) #elif (CATEGORY_ODD_NUMBER&SWV(11)) if( 1 ) #endif return TRUE; return FALSE; } inline uSNKEY RoundUp00( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = MAKE_RANDOM32_KEY_EXPOSED( a, c, d, b ); return dwSUM; } inline uSNKEY RoundUp01( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = SHA32_T3( a ); EDW(dwSUM) = SHA32_T3( b ) + EDW(dwSUM); return dwSUM; } inline uSNKEY RoundUp02( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = _RNDFN_F0( a, b, c ); #if (CATEGORY_ODD_NUMBER&SWV(4)) EDW(dwSUM) ^= 0x00000002; #endif #if (CATEGORY_ODD_NUMBER&SWV(5)) #elif (CATEGORY_ODD_NUMBER&SWV(6)) #elif (CATEGORY_ODD_NUMBER&SWV(7)) #elif (CATEGORY_ODD_NUMBER&SWV(8)) #endif #if (CATEGORY_ODD_NUMBER&SWV(9)) EDW(dwSUM) ^= 0x80000000; #elif (CATEGORY_ODD_NUMBER&SWV(10)) EDW(dwSUM) += _RNDFN_F1( b, c, d ); #endif #if (CATEGORY_ODD_NUMBER&SWV(11)) #endif return dwSUM; } inline uSNKEY RoundUp03( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = _RNDFN_F1( b, c, a ); #if (CATEGORY_ODD_NUMBER&SWV(4)) #endif #if (CATEGORY_ODD_NUMBER&SWV(5)) EDW(dwSUM) += 0x00000001; #endif #if (CATEGORY_ODD_NUMBER&SWV(6)) EDW(dwSUM) |= 0x30000000; #elif (CATEGORY_ODD_NUMBER&SWV(7)) #elif (CATEGORY_ODD_NUMBER&SWV(8)) #endif #if (CATEGORY_ODD_NUMBER&SWV(9)) #endif #if (CATEGORY_ODD_NUMBER&SWV(10)) #endif #if (CATEGORY_ODD_NUMBER&SWV(11)) EDW(dwSUM) += _RNDFN_F0( d, EDW(dwSUM), a ); #endif return dwSUM; } inline uSNKEY RoundUp04( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = MAKE_RANDOM32_KEY_EXPOSED( c, d, a, b ); return dwSUM; #if (CATEGORY_ODD_NUMBER&SWV(7)) EDW(dwSUM) += 0x00000001; #elif (CATEGORY_ODD_NUMBER&SWV(8)) EDW(dwSUM) ^= 0x00050000 + HEX_KEY_1_GENERATOR_004; #endif } inline uSNKEY RoundUp05( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = SHA32_T0(d); EDW(dwSUM) = MAKE_RANDOM32_KEY_EXPOSED( c, EDW(dwSUM), a, b ); #if (CATEGORY_ODD_NUMBER&SWV(5)) EDW(dwSUM) += SHA32_T0(EDW(dwSUM)); #endif #if (CATEGORY_ODD_NUMBER&SWV(6)) EDW(dwSUM) ^= SHA32_T0(EDW(dwSUM)); #endif return dwSUM; } inline uSNKEY RoundUp06( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = SHA32_T3(a); #if (CATEGORY_ODD_NUMBER&SWV(8)) EDW(dwSUM) += _RNDFN32_SWAP( a, HEX_KEY_1_GENERATOR_001 ); #elif (CATEGORY_ODD_NUMBER&SWV(6)) EDW(dwSUM) += _RNDFN32_SWAP( c, HEX_KEY_1_GENERATOR_002 ); #elif (CATEGORY_ODD_NUMBER&SWV(10)) EDW(dwSUM) += _RNDFN32_SWAP( d, HEX_KEY_1_GENERATOR_003 ); #endif #if (CATEGORY_ODD_NUMBER&SWV(7)) #elif (CATEGORY_ODD_NUMBER&SWV(5)) #elif (CATEGORY_ODD_NUMBER&SWV(9)) #endif #if (CATEGORY_ODD_NUMBER&SWV(11)) #elif (CATEGORY_ODD_NUMBER&SWV(4)) #endif EDW(dwSUM) = MAKE_RANDOM32_KEY_EXPOSED( c, a, EDW(dwSUM), d ); return dwSUM; } inline uSNKEY RoundUp07( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = MAKE_RANDOM32_KEY_EXPOSED( a, b, a, c ); return dwSUM; } inline uSNKEY RoundUp08( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = MAKE_RANDOM32_KEY_EXPOSED( c, b, a, b ); return dwSUM; } inline uSNKEY RoundUp09( DWORD a, DWORD b, DWORD c, DWORD d ) { uSNKEY dwSUM; EDW(dwSUM) = MAKE_RANDOM32_KEY_EXPOSED( d, c, d, a ); return dwSUM; } }; //================================================================================================== #pragma warning(pop) //==================================================================================================