1. // bad sp value at call has been detected, the output may be wrong!
  2. // positive sp value has been detected, the output may be wrong!
  3. void __fastcall sub_142109130(__int64 a1)
  4. {
  5. int v1; // eax
  6. unsigned __int64 v2; // rdx
  7. unsigned __int64 v3; // r8
  8. __int64 v4; // rcx
  9. bool v5; // sf
  10. int v6; // eax
  11. int v7; // eax
  12. int v8; // ebp
  13. unsigned __int64 v9; // rax
  14. __int64 v10; // rdx
  15. __int64 v11; // rcx
  16. __int64 v12; // rcx
  17. char v13; // cf
  18. char v14; // zf
  19. unsigned __int64 v15; // rdx
  20. int v16; // ecx
  21. int v17; // esi
  22. unsigned __int64 v18; // rax
  23. __int64 v19; // rdx
  24. __int64 v20; // rcx
  25. __int64 v21; // [rsp-11200h] [rbp-11250h]
  26. int v22; // [rsp-111F8h] [rbp-11248h]
  27. _QWORD v23[2]; // [rsp-111D8h] [rbp-11228h] BYREF
  28. __int16 v24; // [rsp-111C4h] [rbp-11214h]
  29. unsigned __int64 v25; // [rsp-111B8h] [rbp-11208h]
  30. __int64 v26; // [rsp-88B4h] [rbp-8904h]
  31. __int64 v27; // [rsp-88ACh] [rbp-88FCh]
  32. unsigned __int64 v28; // [rsp-8894h] [rbp-88E4h]
  33. int v29; // [rsp-885Ch] [rbp-88ACh]
  34. v1 = ((__int64 (__fastcall *)(__int64, __int64, _QWORD *))sub_142116B90)(a1, 1i64, v23);
  35. v3 = v25;
  36. if ( v1 )
  37. {
  38. v6 = (unsigned __int16)v24;
  39. v4 = 65533i64;
  40. LOWORD(v6) = v24 & 0xFFF9 | 4;
  41. v5 = v24 < 0;
  42. v24 = v6;
  43. if ( !v5 && v5 )
  44. {
  45. v7 = v6 + 1047664835;
  46. BYTE1(v4) = -60;
  47. if ( __SETP__(-60, 0) )
  48. {
  49. v8 = v22;
  50. if ( !__SETP__(-60, 0) )
  51. JUMPOUT(0x1421096CBi64);
  52. *(_BYTE *)(v21 - 574669393) = __ROL1__(*(_BYTE *)(v21 - 574669393), 139);
  53. v9 = v2 + (unsigned int)(v7 + 11597555);
  54. v23[1] = v3;
  55. if ( v3 < v2 || v3 >= v9 )
  56. {
  57. if ( BYTE1(v2) )
  58. {
  59. BYTE1(v2) = -BYTE1(v2);
  60. ((void (__fastcall *)(__int64, unsigned __int64, _QWORD))((char *)&loc_14211C0FF + 5))(v4, v2, 0i64);
  61. BYTE1(v10) -= 100;
  62. ((void (__fastcall *)(__int64, __int64))loc_14210A855)(v11, v10);
  63. v27 = 897967353i64;
  64. v26 = 897967353i64;
  65. *(char *)(2i64 * (unsigned int)(v8 - 1372943025) + 0x44894C82) >>= 4;
  66. v12 = v29;
  67. v15 = v28 % v29;
  68. *(_BYTE *)v28 = v28 / v29;
  69. if ( v13 | v14 )
  70. {
  71. if ( !(v13 | v14) )
  72. {
  73. BYTE1(v15) = -BYTE1(v15);
  74. ((void (__fastcall *)(__int64, unsigned __int64))((char *)&loc_14211DE6F + 4))(v12, v15);
  75. v17 = v26;
  76. ((void (__fastcall *)(_QWORD))loc_14211F25F)((unsigned int)(v16 + 2068842122));
  77. v18 = __rdtsc();
  78. v19 = HIDWORD(v18);
  79. BYTE1(v19) = BYTE5(v18) + 47;
  80. ((void (__fastcall *)(__int64, __int64))((char *)&loc_142124DE9 + 1))(v20, v19);
  81. if ( !v13 )
  82. {
  83. __rdtsc();
  84. *(_QWORD *)((unsigned int)(v17 + 29) + 0x44C748DAi64) -= 558913572i64;
  85. JUMPOUT(0x142109B44i64);
  86. }
  87. JUMPOUT(0x14210A1B1i64);
  88. }
  89. JUMPOUT(0x142109AFEi64);
  90. }
  91. JUMPOUT(0x142109AF8i64);
  92. }
  93. JUMPOUT(0x142109AB3i64);
  94. }
  95. JUMPOUT(0x142109776i64);
  96. }
  97. JUMPOUT(0x1421172D5i64);
  98. }
  99. JUMPOUT(0x1421096C1i64);
  100. }
  101. JUMPOUT(0x142109169i64);
  102. }