SHARE
TWEET

Untitled

a guest Aug 25th, 2019 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. char __fastcall sub_105097C0(int a1, int a2)
  2. {
  3.   int v2; // ebx@1
  4.   int v3; // eax@4
  5.   signed int v4; // edi@4
  6.   char v5; // al@5
  7.   int v6; // eax@5
  8.   int v7; // esi@6
  9.   int v8; // edx@7
  10.   unsigned int v9; // eax@8
  11.   unsigned int v10; // eax@8
  12.   int v11; // edx@12
  13.   unsigned int v12; // ecx@13
  14.   unsigned int v13; // ecx@13
  15.   int v14; // eax@18
  16.   signed __int64 v15; // rax@18
  17.   unsigned __int8 v16; // cf@18
  18.   signed __int64 v17; // rax@18
  19.   signed __int64 v18; // rax@18
  20.   char v20; // [sp+Bh] [bp-25h]@5
  21.   __int64 v21; // [sp+Ch] [bp-24h]@4
  22.   int v22; // [sp+14h] [bp-1Ch]@4
  23.   char v23; // [sp+18h] [bp-18h]@4
  24.   __int64 v24; // [sp+1Ch] [bp-14h]@4
  25.   char v25[3]; // [sp+24h] [bp-Ch]@8
  26.   char v26; // [sp+27h] [bp-9h]@10
  27.   __int64 v27; // [sp+28h] [bp-8h]@7
  28.   char vars0[4]; // [sp+30h] [bp+0h]@8
  29.  
  30.   v2 = a2;
  31.   if ( strlen((const char *)a1) == 15 && *(_BYTE *)(a1 + 4) == 45 && *(_BYTE *)(a1 + 10) == 45 )
  32.   {
  33.     v23 = 0;
  34.     v3 = *(_DWORD *)a1;
  35.     v4 = 13;
  36.     _mm_storel_epi64((__m128i *)&v21, 0i64);
  37.     LODWORD(v21) = v3;
  38.     HIDWORD(v21) = *(_DWORD *)(a1 + 5);
  39.     LOBYTE(v3) = *(_BYTE *)(a1 + 9);
  40.     v22 = 0;
  41.     LOBYTE(v22) = v3;
  42.     *(int *)((char *)&v22 + 1) = *(_DWORD *)(a1 + 11);
  43.     _mm_storel_epi64((__m128i *)&v24, 0i64);
  44.     while ( 1 )
  45.     {
  46.       v5 = *(&v20 + v4--);
  47.       v6 = sub_109EDF80("ABCDEFGHJKLMNPQRSTUVWXYZ23456789", v5);
  48.       if ( !v6 )
  49.         break;
  50.       v7 = v6 - (_DWORD)"ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
  51.       if ( (unsigned int)(v6 - (_DWORD)"ABCDEFGHJKLMNPQRSTUVWXYZ23456789") >= 0x20 )
  52.         break;
  53.       v8 = 0;
  54.       _mm_storel_epi64((__m128i *)&v27, 0i64);
  55.       do
  56.       {
  57.         --v8;
  58.         v9 = (unsigned __int8)vars0[v8] + 32 * (unsigned __int8)v25[v8];
  59.         vars0[v8] = v9;
  60.         v10 = v9 >> 8;
  61.         if ( v10 )
  62.         {
  63.           if ( v8 == -8 )
  64.             return 0;
  65.           *(&v26 + v8 + 8) += v10;
  66.         }
  67.       }
  68.       while ( v8 + 8 > 0 );
  69.       v11 = 0;
  70.       _mm_storel_epi64((__m128i *)&v24, _mm_loadl_epi64((const __m128i *)&v27));
  71.       _mm_storel_epi64((__m128i *)&v27, 0i64);
  72.       do
  73.       {
  74.         --v11;
  75.         v12 = (unsigned __int8)vars0[v11] + v7 + (unsigned __int8)v25[v11];
  76.         v7 = 0;
  77.         vars0[v11] = v12;
  78.         v13 = v12 >> 8;
  79.         if ( v13 )
  80.         {
  81.           if ( v11 == -8 )
  82.             return 0;
  83.           *(&v26 + v11 + 8) += v13;
  84.         }
  85.       }
  86.       while ( v11 + 8 > 0 );
  87.       _mm_storel_epi64((__m128i *)&v24, _mm_loadl_epi64((const __m128i *)&v27));
  88.       if ( v4 <= 0 )
  89.       {
  90.         *(_DWORD *)v2 = (unsigned __int8)v24;
  91.         v14 = BYTE1(v24);
  92.         *(_DWORD *)(v2 + 4) = 0;
  93.         v15 = (signed __int64)v14 << 8;
  94.         v16 = __CFADD__((_DWORD)v15, *(_DWORD *)v2);
  95.         *(_DWORD *)v2 += v15;
  96.         LODWORD(v15) = BYTE2(v24);
  97.         *(_DWORD *)(v2 + 4) += HIDWORD(v15) + v16;
  98.         v17 = (signed __int64)(signed int)v15 << 16;
  99.         v16 = __CFADD__((_DWORD)v17, *(_DWORD *)v2);
  100.         *(_DWORD *)v2 += v17;
  101.         LODWORD(v17) = BYTE3(v24);
  102.         *(_DWORD *)(v2 + 4) += HIDWORD(v17) + v16;
  103.         v18 = (signed __int64)(signed int)v17 << 24;
  104.         v16 = __CFADD__((_DWORD)v18, *(_DWORD *)v2);
  105.         *(_DWORD *)v2 += v18;
  106.         LODWORD(v18) = BYTE4(v24);
  107.         *(_DWORD *)(v2 + 4) += HIDWORD(v18) + v16;
  108.         *(_DWORD *)v2 = *(_DWORD *)v2;
  109.         *(_DWORD *)(v2 + 4) += v18;
  110.         *(_QWORD *)v2 += __PAIR__((unsigned int)BYTE5(v24) << 8, 0);
  111.         *(_QWORD *)v2 += __PAIR__((unsigned int)BYTE6(v24) << 16, 0);
  112.         LODWORD(v18) = BYTE7(v24) << 24;
  113.         *(_DWORD *)v2 = *(_DWORD *)v2;
  114.         *(_DWORD *)(v2 + 4) += v18;
  115.         return 1;
  116.       }
  117.     }
  118.   }
  119.   return 0;
  120. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top