Advertisement
Guest User

SNK_CRYPT

a guest
Nov 28th, 2019
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.88 KB | None | 0 0
  1. unsigned __int64 __fastcall sub_140382190(__int64 lpKey, int *dwLeft, int *dwRight)
  2. {
  3.   int v4; // er10@1
  4.   int *v5; // rdi@1
  5.   unsigned __int64 v6; // r11@1
  6.   int v7; // er10@1
  7.   int v8; // esi@1
  8.   int v9; // er10@1
  9.   int v10; // esi@1
  10.   int v11; // er10@1
  11.   int v12; // esi@1
  12.   int v13; // er10@1
  13.   int v14; // esi@1
  14.   int v15; // er10@1
  15.   int v16; // esi@1
  16.   int v17; // er10@1
  17.   int v18; // esi@1
  18.   int v19; // er10@1
  19.   int v20; // esi@1
  20.   int v21; // er10@1
  21.   unsigned int v22; // er8@1
  22.   unsigned __int64 result; // rax@1
  23.  
  24.   v4 = *dwRight + *(_DWORD *)(lpKey + 136);
  25.   v5 = dwRight;
  26.   v6 = (unsigned int)(v4 << *(_DWORD *)(lpKey + 140)) | ((unsigned __int64)(unsigned int)v4 >> (-*(_BYTE *)(lpKey + 140) & 0x1F));
  27.   v7 = *dwLeft ^ (S4_SBox[(unsigned __int64)(unsigned __int8)(v6 >> 16)]
  28.                 + (S2_SBox[(unsigned __int64)(unsigned __int8)v6] ^ S1_SBox[(unsigned __int64)(unsigned __int8)(v6 >> 8)])
  29.                 - S3_SBox[v6 >> 24]);
  30.   v8 = ((S3_SBox[((unsigned int)((*(_DWORD *)(lpKey + 128) - v7) << *(_DWORD *)(lpKey + 132)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 128) - v7) >> (-*(_BYTE *)(lpKey + 132) & 0x1F))) >> 24] ^ (S2_SBox[(unsigned __int64)(unsigned __int8)(((*(_DWORD *)(lpKey + 128) - v7) << *(_DWORD *)(lpKey + 132)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 128) - v7) >> (-*(_BYTE *)(lpKey + 132) & 0x1F)))] + S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 128) - v7) << *(_DWORD *)(lpKey + 132)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 128) - v7) >> (-*(_BYTE *)(lpKey + 132) & 0x1F))) >> 8)]))
  31.       - S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 128) - v7) << *(_DWORD *)(lpKey + 132)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 128) - v7) >> (-*(_BYTE *)(lpKey + 132) & 0x1F))) >> 16)]) ^ *dwRight;
  32.   v9 = S4_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v8 ^ *(_DWORD *)(lpKey + 120)) << *(_DWORD *)(lpKey + 124)) | ((unsigned __int64)((unsigned int)v8 ^ *(_DWORD *)(lpKey + 120)) >> (-*(_BYTE *)(lpKey + 124) & 0x1F))) >> 16)] ^ (S3_SBox[((((unsigned int)v8 ^ *(_DWORD *)(lpKey + 120)) << *(_DWORD *)(lpKey + 124)) | ((unsigned __int64)((unsigned int)v8 ^ *(_DWORD *)(lpKey + 120)) >> (-*(_BYTE *)(lpKey + 124) & 0x1F))) >> 24] + S1_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v8 ^ *(_DWORD *)(lpKey + 120)) << *(_DWORD *)(lpKey + 124)) | ((unsigned __int64)((unsigned int)v8 ^ *(_DWORD *)(lpKey + 120)) >> (-*(_BYTE *)(lpKey + 124) & 0x1F))) >> 8)] - S2_SBox[(unsigned __int64)(unsigned __int8)(((v8 ^ *(_DWORD *)(lpKey + 120)) << *(_DWORD *)(lpKey + 124)) | ((unsigned __int64)((unsigned int)v8 ^ *(_DWORD *)(lpKey + 120)) >> (-*(_BYTE *)(lpKey + 124) & 0x1F)))]) ^ v7;
  33.   v10 = (S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v9 + *(_DWORD *)(lpKey + 112)) << *(_DWORD *)(lpKey + 116)) | ((unsigned __int64)(unsigned int)(v9 + *(_DWORD *)(lpKey + 112)) >> (-*(_BYTE *)(lpKey + 116) & 0x1F))) >> 16)]
  34.        + (S2_SBox[(unsigned __int64)(unsigned __int8)(((v9 + *(_DWORD *)(lpKey + 112)) << *(_DWORD *)(lpKey + 116)) | ((unsigned __int64)(unsigned int)(v9 + *(_DWORD *)(lpKey + 112)) >> (-*(_BYTE *)(lpKey + 116) & 0x1F)))] ^ S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v9 + *(_DWORD *)(lpKey + 112)) << *(_DWORD *)(lpKey + 116)) | ((unsigned __int64)(unsigned int)(v9 + *(_DWORD *)(lpKey + 112)) >> (-*(_BYTE *)(lpKey + 116) & 0x1F))) >> 8)])
  35.        - S3_SBox[((unsigned int)((v9 + *(_DWORD *)(lpKey + 112)) << *(_DWORD *)(lpKey + 116)) | ((unsigned __int64)(unsigned int)(v9 + *(_DWORD *)(lpKey + 112)) >> (-*(_BYTE *)(lpKey + 116) & 0x1F))) >> 24]) ^ v8;
  36.   v11 = ((S3_SBox[((unsigned int)((*(_DWORD *)(lpKey + 104) - v10) << *(_DWORD *)(lpKey + 108)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 104) - v10) >> (-*(_BYTE *)(lpKey + 108) & 0x1F))) >> 24] ^ (S2_SBox[(unsigned __int64)(unsigned __int8)(((*(_DWORD *)(lpKey + 104) - v10) << *(_DWORD *)(lpKey + 108)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 104) - v10) >> (-*(_BYTE *)(lpKey + 108) & 0x1F)))] + S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 104) - v10) << *(_DWORD *)(lpKey + 108)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 104) - v10) >> (-*(_BYTE *)(lpKey + 108) & 0x1F))) >> 8)]))
  37.        - S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 104) - v10) << *(_DWORD *)(lpKey + 108)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 104) - v10) >> (-*(_BYTE *)(lpKey + 108) & 0x1F))) >> 16)]) ^ v9;
  38.   v12 = S4_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v11 ^ *(_DWORD *)(lpKey + 96)) << *(_DWORD *)(lpKey + 100)) | ((unsigned __int64)((unsigned int)v11 ^ *(_DWORD *)(lpKey + 96)) >> (-*(_BYTE *)(lpKey + 100) & 0x1F))) >> 16)] ^ (S3_SBox[((((unsigned int)v11 ^ *(_DWORD *)(lpKey + 96)) << *(_DWORD *)(lpKey + 100)) | ((unsigned __int64)((unsigned int)v11 ^ *(_DWORD *)(lpKey + 96)) >> (-*(_BYTE *)(lpKey + 100) & 0x1F))) >> 24] + S1_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v11 ^ *(_DWORD *)(lpKey + 96)) << *(_DWORD *)(lpKey + 100)) | ((unsigned __int64)((unsigned int)v11 ^ *(_DWORD *)(lpKey + 96)) >> (-*(_BYTE *)(lpKey + 100) & 0x1F))) >> 8)] - S2_SBox[(unsigned __int64)(unsigned __int8)(((v11 ^ *(_DWORD *)(lpKey + 96)) << *(_DWORD *)(lpKey + 100)) | ((unsigned __int64)((unsigned int)v11 ^ *(_DWORD *)(lpKey + 96)) >> (-*(_BYTE *)(lpKey + 100) & 0x1F)))]) ^ v10;
  39.   v13 = (S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v12 + *(_DWORD *)(lpKey + 88)) << *(_DWORD *)(lpKey + 92)) | ((unsigned __int64)(unsigned int)(v12 + *(_DWORD *)(lpKey + 88)) >> (-*(_BYTE *)(lpKey + 92) & 0x1F))) >> 16)]
  40.        + (S2_SBox[(unsigned __int64)(unsigned __int8)(((v12 + *(_DWORD *)(lpKey + 88)) << *(_DWORD *)(lpKey + 92)) | ((unsigned __int64)(unsigned int)(v12 + *(_DWORD *)(lpKey + 88)) >> (-*(_BYTE *)(lpKey + 92) & 0x1F)))] ^ S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v12 + *(_DWORD *)(lpKey + 88)) << *(_DWORD *)(lpKey + 92)) | ((unsigned __int64)(unsigned int)(v12 + *(_DWORD *)(lpKey + 88)) >> (-*(_BYTE *)(lpKey + 92) & 0x1F))) >> 8)])
  41.        - S3_SBox[((unsigned int)((v12 + *(_DWORD *)(lpKey + 88)) << *(_DWORD *)(lpKey + 92)) | ((unsigned __int64)(unsigned int)(v12 + *(_DWORD *)(lpKey + 88)) >> (-*(_BYTE *)(lpKey + 92) & 0x1F))) >> 24]) ^ v11;
  42.   v14 = ((S3_SBox[((unsigned int)((*(_DWORD *)(lpKey + 80) - v13) << *(_DWORD *)(lpKey + 84)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 80) - v13) >> (-*(_BYTE *)(lpKey + 84) & 0x1F))) >> 24] ^ (S2_SBox[(unsigned __int64)(unsigned __int8)(((*(_DWORD *)(lpKey + 80) - v13) << *(_DWORD *)(lpKey + 84)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 80) - v13) >> (-*(_BYTE *)(lpKey + 84) & 0x1F)))] + S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 80) - v13) << *(_DWORD *)(lpKey + 84)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 80) - v13) >> (-*(_BYTE *)(lpKey + 84) & 0x1F))) >> 8)]))
  43.        - S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 80) - v13) << *(_DWORD *)(lpKey + 84)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 80) - v13) >> (-*(_BYTE *)(lpKey + 84) & 0x1F))) >> 16)]) ^ v12;
  44.   v15 = S4_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v14 ^ *(_DWORD *)(lpKey + 72)) << *(_DWORD *)(lpKey + 76)) | ((unsigned __int64)((unsigned int)v14 ^ *(_DWORD *)(lpKey + 72)) >> (-*(_BYTE *)(lpKey + 76) & 0x1F))) >> 16)] ^ (S3_SBox[((((unsigned int)v14 ^ *(_DWORD *)(lpKey + 72)) << *(_DWORD *)(lpKey + 76)) | ((unsigned __int64)((unsigned int)v14 ^ *(_DWORD *)(lpKey + 72)) >> (-*(_BYTE *)(lpKey + 76) & 0x1F))) >> 24] + S1_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v14 ^ *(_DWORD *)(lpKey + 72)) << *(_DWORD *)(lpKey + 76)) | ((unsigned __int64)((unsigned int)v14 ^ *(_DWORD *)(lpKey + 72)) >> (-*(_BYTE *)(lpKey + 76) & 0x1F))) >> 8)] - S2_SBox[(unsigned __int64)(unsigned __int8)(((v14 ^ *(_DWORD *)(lpKey + 72)) << *(_DWORD *)(lpKey + 76)) | ((unsigned __int64)((unsigned int)v14 ^ *(_DWORD *)(lpKey + 72)) >> (-*(_BYTE *)(lpKey + 76) & 0x1F)))]) ^ v13;
  45.   v16 = (S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v15 + *(_DWORD *)(lpKey + 64)) << *(_DWORD *)(lpKey + 68)) | ((unsigned __int64)(unsigned int)(v15 + *(_DWORD *)(lpKey + 64)) >> (-*(_BYTE *)(lpKey + 68) & 0x1F))) >> 16)]
  46.        + (S2_SBox[(unsigned __int64)(unsigned __int8)(((v15 + *(_DWORD *)(lpKey + 64)) << *(_DWORD *)(lpKey + 68)) | ((unsigned __int64)(unsigned int)(v15 + *(_DWORD *)(lpKey + 64)) >> (-*(_BYTE *)(lpKey + 68) & 0x1F)))] ^ S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v15 + *(_DWORD *)(lpKey + 64)) << *(_DWORD *)(lpKey + 68)) | ((unsigned __int64)(unsigned int)(v15 + *(_DWORD *)(lpKey + 64)) >> (-*(_BYTE *)(lpKey + 68) & 0x1F))) >> 8)])
  47.        - S3_SBox[((unsigned int)((v15 + *(_DWORD *)(lpKey + 64)) << *(_DWORD *)(lpKey + 68)) | ((unsigned __int64)(unsigned int)(v15 + *(_DWORD *)(lpKey + 64)) >> (-*(_BYTE *)(lpKey + 68) & 0x1F))) >> 24]) ^ v14;
  48.   v17 = ((S3_SBox[((unsigned int)((*(_DWORD *)(lpKey + 56) - v16) << *(_DWORD *)(lpKey + 60)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 56) - v16) >> (-*(_BYTE *)(lpKey + 60) & 0x1F))) >> 24] ^ (S2_SBox[(unsigned __int64)(unsigned __int8)(((*(_DWORD *)(lpKey + 56) - v16) << *(_DWORD *)(lpKey + 60)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 56) - v16) >> (-*(_BYTE *)(lpKey + 60) & 0x1F)))] + S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 56) - v16) << *(_DWORD *)(lpKey + 60)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 56) - v16) >> (-*(_BYTE *)(lpKey + 60) & 0x1F))) >> 8)]))
  49.        - S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 56) - v16) << *(_DWORD *)(lpKey + 60)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 56) - v16) >> (-*(_BYTE *)(lpKey + 60) & 0x1F))) >> 16)]) ^ v15;
  50.   v18 = S4_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v17 ^ *(_DWORD *)(lpKey + 48)) << *(_DWORD *)(lpKey + 52)) | ((unsigned __int64)((unsigned int)v17 ^ *(_DWORD *)(lpKey + 48)) >> (-*(_BYTE *)(lpKey + 52) & 0x1F))) >> 16)] ^ (S3_SBox[((((unsigned int)v17 ^ *(_DWORD *)(lpKey + 48)) << *(_DWORD *)(lpKey + 52)) | ((unsigned __int64)((unsigned int)v17 ^ *(_DWORD *)(lpKey + 48)) >> (-*(_BYTE *)(lpKey + 52) & 0x1F))) >> 24] + S1_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v17 ^ *(_DWORD *)(lpKey + 48)) << *(_DWORD *)(lpKey + 52)) | ((unsigned __int64)((unsigned int)v17 ^ *(_DWORD *)(lpKey + 48)) >> (-*(_BYTE *)(lpKey + 52) & 0x1F))) >> 8)] - S2_SBox[(unsigned __int64)(unsigned __int8)(((v17 ^ *(_DWORD *)(lpKey + 48)) << *(_DWORD *)(lpKey + 52)) | ((unsigned __int64)((unsigned int)v17 ^ *(_DWORD *)(lpKey + 48)) >> (-*(_BYTE *)(lpKey + 52) & 0x1F)))]) ^ v16;
  51.   v19 = (S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v18 + *(_DWORD *)(lpKey + 40)) << *(_DWORD *)(lpKey + 44)) | ((unsigned __int64)(unsigned int)(v18 + *(_DWORD *)(lpKey + 40)) >> (-*(_BYTE *)(lpKey + 44) & 0x1F))) >> 16)]
  52.        + (S2_SBox[(unsigned __int64)(unsigned __int8)(((v18 + *(_DWORD *)(lpKey + 40)) << *(_DWORD *)(lpKey + 44)) | ((unsigned __int64)(unsigned int)(v18 + *(_DWORD *)(lpKey + 40)) >> (-*(_BYTE *)(lpKey + 44) & 0x1F)))] ^ S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((v18 + *(_DWORD *)(lpKey + 40)) << *(_DWORD *)(lpKey + 44)) | ((unsigned __int64)(unsigned int)(v18 + *(_DWORD *)(lpKey + 40)) >> (-*(_BYTE *)(lpKey + 44) & 0x1F))) >> 8)])
  53.        - S3_SBox[((unsigned int)((v18 + *(_DWORD *)(lpKey + 40)) << *(_DWORD *)(lpKey + 44)) | ((unsigned __int64)(unsigned int)(v18 + *(_DWORD *)(lpKey + 40)) >> (-*(_BYTE *)(lpKey + 44) & 0x1F))) >> 24]) ^ v17;
  54.   v20 = ((S3_SBox[((unsigned int)((*(_DWORD *)(lpKey + 32) - v19) << *(_DWORD *)(lpKey + 36)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 32) - v19) >> (-*(_BYTE *)(lpKey + 36) & 0x1F))) >> 24] ^ (S2_SBox[(unsigned __int64)(unsigned __int8)(((*(_DWORD *)(lpKey + 32) - v19) << *(_DWORD *)(lpKey + 36)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 32) - v19) >> (-*(_BYTE *)(lpKey + 36) & 0x1F)))] + S1_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 32) - v19) << *(_DWORD *)(lpKey + 36)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 32) - v19) >> (-*(_BYTE *)(lpKey + 36) & 0x1F))) >> 8)]))
  55.        - S4_SBox[(unsigned __int64)(unsigned __int8)(((unsigned int)((*(_DWORD *)(lpKey + 32) - v19) << *(_DWORD *)(lpKey + 36)) | ((unsigned __int64)(unsigned int)(*(_DWORD *)(lpKey + 32) - v19) >> (-*(_BYTE *)(lpKey + 36) & 0x1F))) >> 16)]) ^ v18;
  56.   v21 = S4_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v20 ^ *(_DWORD *)(lpKey + 24)) << *(_DWORD *)(lpKey + 28)) | ((unsigned __int64)((unsigned int)v20 ^ *(_DWORD *)(lpKey + 24)) >> (-*(_BYTE *)(lpKey + 28) & 0x1F))) >> 16)] ^ (S3_SBox[((((unsigned int)v20 ^ *(_DWORD *)(lpKey + 24)) << *(_DWORD *)(lpKey + 28)) | ((unsigned __int64)((unsigned int)v20 ^ *(_DWORD *)(lpKey + 24)) >> (-*(_BYTE *)(lpKey + 28) & 0x1F))) >> 24] + S1_SBox[(unsigned __int64)(unsigned __int8)(((((unsigned int)v20 ^ *(_DWORD *)(lpKey + 24)) << *(_DWORD *)(lpKey + 28)) | ((unsigned __int64)((unsigned int)v20 ^ *(_DWORD *)(lpKey + 24)) >> (-*(_BYTE *)(lpKey + 28) & 0x1F))) >> 8)] - S2_SBox[(unsigned __int64)(unsigned __int8)(((v20 ^ *(_DWORD *)(lpKey + 24)) << *(_DWORD *)(lpKey + 28)) | ((unsigned __int64)((unsigned int)v20 ^ *(_DWORD *)(lpKey + 24)) >> (-*(_BYTE *)(lpKey + 28) & 0x1F)))]) ^ v19;
  57.   v22 = ((v21 + *(_DWORD *)(lpKey + 16)) << *(_DWORD *)(lpKey + 20)) | ((unsigned int)(v21 + *(_DWORD *)(lpKey + 16)) >> (-*(_BYTE *)(lpKey + 20) & 0x1F));
  58.   *v5 = v21;
  59.   result = (unsigned __int64)v22 >> 16;
  60.   *dwLeft = v20 ^ (S4_SBox[(unsigned __int64)(unsigned __int8)result]
  61.                  + (S2_SBox[(unsigned __int64)(unsigned __int8)v22] ^ S1_SBox[(unsigned __int64)(unsigned __int8)((unsigned __int64)v22 >> 8)])
  62.                  - S3_SBox[(unsigned __int64)v22 >> 24]);
  63.   return result;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement