Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement