Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint32_t tsl_decrypt_id(const int& id) {
- return ror4(id ^ 0x4DF5CE80, 6) ^ (ror4(id ^ 0x4DF5CE80, 6) << 16) ^ 0xC63740F;
- }
- uint64_t tsl_decrypt_playercontroller(struct Tsl *tsl, uint64_t prop)
- {
- struct uint128_t xmm;
- if (!READ(prop, &xmm, 16))
- {
- return 0;
- }
- uint32_t key = (uint32_t)xmm.low;
- if (!IsValid(xmm.high))
- return 0;
- if (!mem->IsValid(xmm.high) || !mem->IsValid(key))
- return 0;
- int v9; // edx
- int v10; // ecx
- int v11; // edx
- __int64 v12; // rcx
- if (IDA_HIWORD(key) & 4)
- v9 = ~(~(_DWORD(key) >> 16) - 306);
- else
- IDA_LOWORD(v9) = _WORD(IDA_HIWORD(key)) + 204;
- v10 = ((unsigned __int16)v9 + 19198) ^ (unsigned __int16)(_WORD(IDA_LOWORD(key)) + 30);
- v11 = (unsigned __int8)(((v9 - 2) ^ (IDA_LOWORD(key) + 30)) + 14) ^ ((v10 >> 8) + 132);
- if (IDA_LOWORD(key) & 2)
- v12 = xmm.high ^ key;
- else
- v12 = xmm.high + key;
- auto index = (v11 % 128);
- uint64_t func = READ64(GET_ADDR(TABLE) + 0x8 * index);
- if (auto encValue = decrypt(tsl, func, v12))
- return ror8(encValue, 6);
- return 0;
- }
- uint64_t tsl_decrypt_pawn(struct Tsl *tsl, uint64_t prop)
- {
- struct uint128_t xmm;
- if (!READ(prop, &xmm, 16))
- {
- return 0;
- }
- uint32_t key = (uint32_t)xmm.low;
- if (!IsValid(xmm.high))
- return 0;
- if (!mem->IsValid(xmm.high) || !mem->IsValid(key))
- return 0;
- unsigned int v6; // ecx
- int v7; // edx
- int v8; // eax
- int v9; // ecx
- __int64 v19 = key; // [rsp+68h] [rbp+20h]
- v6 = (unsigned int)v19 >> 16;
- if (v19 & 0x40000)
- v6 = ~(~v6 - 240);
- else
- IDA_LOWORD(v6) = v6 + 160;
- v7 = (unsigned __int16)v19 ^ ((unsigned __int16)v6 + 12432);
- v8 = v7 >> 8;
- v9 = (unsigned __int8)((unsigned __int16)(v19 ^ (v6 + 12432)) >> 8);
- if (v8 & 4)
- v9 = ~(~v9 + 48);
- else
- IDA_LOBYTE(v9) = v9 - 32;
- auto index = (((unsigned __int8)v7 ^ ((unsigned __int8)v9 + 224)) % 128);
- uint64_t func = READ64(GET_ADDR(TABLE) + 0x8 * index);
- if (auto encValue = decrypt(tsl, func, (xmm.high - (unsigned int)v19)))
- return ror8(encValue, 80);
- return 0;
- }
- uint64_t tsl_decrypt_rootcomponent(struct Tsl *tsl, uint64_t prop)
- {
- struct uint128_t xmm;
- if (!READ(prop, &xmm, 16))
- {
- return 0;
- }
- uint32_t key = (uint32_t)xmm.low;
- if (!IsValid(xmm.high))
- return 0;
- if (!mem->IsValid(xmm.high) || !mem->IsValid(key))
- return 0;
- unsigned int v6; // ecx
- int v7; // edx
- int v8; // eax
- int v9; // ecx
- __int64 v19 = key; // [rsp+68h] [rbp+20h]
- v6 = (unsigned int)v19 >> 16;
- if (v19 & 0x40000)
- v6 = ~(~v6 - 240);
- else
- IDA_LOWORD(v6) = v6 + 160;
- v7 = (unsigned __int16)v19 ^ ((unsigned __int16)v6 + 12432);
- v8 = v7 >> 8;
- v9 = (unsigned __int8)((unsigned __int16)(v19 ^ (v6 + 12432)) >> 8);
- if (v8 & 4)
- v9 = ~(~v9 + 48);
- else
- IDA_LOBYTE(v9) = v9 - 32;
- auto index = (((unsigned __int8)v7 ^ ((unsigned __int8)v9 + 224)) % 128);
- uint64_t func = READ64(GET_ADDR(TABLE) + 0x8 * index);
- if (auto encValue = decrypt(tsl, func, (xmm.high - (unsigned int)v19)))
- return ror8(encValue, 80);
- return 0;
- }
- uint64_t tsl_decrypt_gameinst(struct Tsl *tsl, uint64_t prop)
- {
- struct uint128_t xmm;
- if (!READ(prop, &xmm, 16))
- {
- return 0;
- }
- uint32_t key = (uint32_t)xmm.low;
- if (!IsValid(xmm.high))
- return 0;
- if (!mem->IsValid(xmm.high) || !mem->IsValid(key))
- return 0;
- int v12 = (unsigned __int16)(IDA_LOWORD(key) - 37) ^ ((unsigned __int16)ror2(IDA_HIWORD(key), 8) + 6005);
- auto index = ((((unsigned __int8)((v12 >> 8) - 99) + 214) ^ (unsigned __int8)(((IDA_LOWORD(key) - 37) ^ (ror2(IDA_HIWORD(key), 8) + 117)) + 51))
- % 128);
- uint64_t func = READ64(GET_ADDR(TABLE) + 0x8 * index);
- if (auto encValue = decrypt(tsl, func, (~(~xmm.high ^ key))))
- return ror8(encValue, -95);
- return 0;
- }
- uint64_t tsl_decrypt_ulevel(struct Tsl *tsl, uint64_t prop)
- {
- struct uint128_t xmm;
- if (!READ(prop, &xmm, 16))
- {
- return 0;
- }
- uint32_t key = (uint32_t)xmm.low;
- if (!IsValid(xmm.high))
- return 0;
- if (!mem->IsValid(xmm.high) || !mem->IsValid(key))
- return 0;
- int v6; // edx
- int v7; // ecx
- __int64 v8; // rdx
- v6 = (unsigned __int16)(IDA_LOWORD(key) - 66) ^ ((unsigned __int16)(IDA_HIWORD(key) + 122) + 10910);
- v7 = (unsigned __int8)(((IDA_LOWORD(key) - 66) ^ (IDA_HIWORD(key) + 24)) - 82) ^ ((unsigned __int8)((v6 >> 8) + 114) + 68);
- v8 = IDA_LOWORD(key) & 2 ? xmm.high ^ key : xmm.high + key;
- auto index = (v7 % 128);
- uint64_t func = READ64(GET_ADDR(TABLE) + 0x8 * index);
- if (auto encValue = decrypt(tsl, func, v8))
- return ror8(encValue, 38);
- return 0;
- }
- uint64_t tsl_decrypt_actor(struct Tsl *tsl, uint64_t prop)
- {
- struct uint128_t xmm;
- if (!READ(prop, &xmm, 16))
- {
- return 0;
- }
- uint32_t key = (uint32_t)xmm.low;
- if (!IsValid(xmm.high))
- return 0;
- if (!mem->IsValid(xmm.high) || !mem->IsValid(key))
- return 0;
- int v13; // eax
- __int16 v14; // dx
- __int16 v15; // ax
- int v16; // edx
- v13 = _DWORD(key) >> 16;
- if (IDA_HIWORD(key) & 2)
- {
- v14 = v13 - 114;
- v15 = v13 + 114;
- IDA_LOWORD(v16) = ~v14;
- }
- else
- {
- v15 = v13 ^ 0x72;
- v16 = (_DWORD(key) >> 16) + 115;
- }
- auto index = (((((unsigned __int16)((~v15 + v16 - 25030) ^ ~((~IDA_LOWORD(key) + 102) ^ 0xFF9A)) >> 8)
- + 12) ^ (unsigned __int8)~((~((~(_BYTE)v15 + v16 + 58) ^ ~((~(_BYTE)IDA_LOWORD(key) + 102) ^ 0x9A))
- - 106) ^ 0x6A))
- % 128);
- uint64_t func = READ64(GET_ADDR(TABLE) + 0x8 * index);
- if (auto encValue = decrypt(tsl, func, (key + rol8(key + xmm.high, 8 * (IDA_LOWORD(key) & 7u)))))
- return ror8(encValue, 82);
- return 0;
- }
- uint64_t tsl_decrypt_localplayer(struct Tsl *tsl, uint64_t prop)
- {
- struct uint128_t xmm;
- if (!READ(prop, &xmm, 16))
- {
- return 0;
- }
- uint32_t key = (uint32_t)xmm.low;
- if (!IsValid(xmm.high))
- return 0;
- if (!mem->IsValid(xmm.high) || !mem->IsValid(key))
- return 0;
- auto index = ((((unsigned __int8)(((unsigned __int16)((IDA_HIWORD(key) - 8454) ^ ~((~IDA_LOWORD(key) - 90) ^ 0x5A)) >> 8)
- - 54)
- + 140) ^ (unsigned __int8)~((~((IDA_HIWORD(key) - 6) ^ ~((~(_BYTE)IDA_LOWORD(key) - 90) ^ 0x5A))
- - 42) ^ 0x2A))
- % 128);
- uint64_t func = READ64(GET_ADDR(TABLE) + 0x8 * index);
- if (auto encValue = decrypt(tsl, func, (key + rol8(key + xmm.high, 8 * (IDA_LOWORD(key) & 7u)))))
- return ror8(encValue, 18);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement