Files
ReSkate/Engine/Game/Build/20260929/fixed_stop_entitlement.h
T
2026-10-02 14:40:41 -05:00

92 lines
5.5 KiB
C++

#pragma once
#include "engine.h"
#include <array>
#include <cstdint>
// Fixed-stop entitlement provider (CheckEntitlements replacement).
namespace dingosdk::game::build::v20260929::fixed_stop_entitlement {
// CheckEntitlements entry.
inline constexpr std::uintptr_t check_entitlements = engine::check_entitlements;
inline constexpr std::array<unsigned char, 40> check_entitlements_prefix{
0x40,0x55,0x57,0x41,0x56,0x41,0x57,0x48,0x8d,0x6c,0x24,0xd8,0x48,0x81,0xec,0x28,
0x01,0x00,0x00,0x48,0x8b,0x05,0x66,0x00,0xa5,0x06,0x48,0x33,0xc4,0x48,0x89,0x45,
0x08,0x4c,0x8b,0xf1,0x4c,0x89,0x44,0x24};
// Group enumeration inside CheckEntitlements: the exact entry sequence that
// reserves the eID list, reads group +0x88/+0x90, skips null members, obtains
// the native eID key, and calls the member lookup.
inline constexpr std::uintptr_t group_enumeration = 0x77458f;
inline constexpr std::array<unsigned char, 76> group_enumeration_prefix{
0x48,0x8d,0x4c,0x24,0x60,0x48,0x8b,0x93,0x90,0x00,0x00,0x00,0x48,0x2b,0x93,0x88,
0x00,0x00,0x00,0x48,0xc1,0xfa,0x04,0xe8,0xd5,0x62,0xae,0xff,0x4c,0x8b,0xbb,0x90,
0x00,0x00,0x00,0x48,0x8b,0xb3,0x88,0x00,0x00,0x00,0x49,0x3b,0xf7,0x74,0x7c,0x66,
0x90,0x48,0x8b,0x5e,0x08,0x48,0x85,0xdb,0x74,0x68,0x33,0xc9,0xe8,0x70,0x50,0xfd,
0xff,0x48,0x8b,0xd0,0x48,0x8b,0xcb,0xe8,0xf5,0x05,0xf5,0x00};
// Result vector constructor.
inline constexpr std::uintptr_t result_vector_init = 0x58b1cb0;
inline constexpr std::array<unsigned char, 37> result_vector_init_prefix{
0x40,0x53,0x48,0x83,0xec,0x20,0x48,0x8b,0xd9,0xe8,0x42,0x9e,0x51,0xfe,0x48,0x89,
0x03,0x48,0x8b,0xc3,0xc7,0x43,0x08,0x00,0x00,0x00,0x00,0xc6,0x43,0x0c,0x00,0x48,
0x83,0xc4,0x20,0x5b,0xc3};
// Native array allocation.
inline constexpr std::uintptr_t array_allocate = engine::array_allocate;
inline constexpr std::array<unsigned char, 61> array_allocate_prefix{
0x48,0x89,0x5c,0x24,0x08,0x57,0x48,0x83,0xec,0x20,0x49,0x8b,0xc1,0x49,0x8b,0xd8,
0x48,0x8b,0xfa,0x4d,0x85,0xc9,0x75,0x07,0xb2,0x01,0xe8,0xe1,0x26,0x7d,0xfd,0x44,
0x0f,0xb6,0x4c,0x24,0x48,0x4c,0x8b,0xc3,0x48,0x8b,0xd7,0x48,0x8b,0xc8,0x48,0x8b,
0x5c,0x24,0x30,0x48,0x83,0xc4,0x20,0x5f,0xe9,0xc3,0x7a,0x7b,0xfd};
// Result element constructor.
inline constexpr std::uintptr_t result_element_init = 0x58b1c70;
inline constexpr std::array<unsigned char, 50> result_element_init_prefix{
0x40,0x53,0x48,0x83,0xec,0x20,0x48,0x8b,0xd9,0xe8,0x82,0x9e,0x51,0xfe,0x48,0x89,
0x03,0x48,0x8d,0x05,0x7c,0xca,0xa4,0x01,0x48,0x89,0x43,0x08,0xe8,0x6f,0x9e,0x51,
0xfe,0x48,0x89,0x43,0x10,0x48,0x8b,0xc3,0xc6,0x43,0x18,0x00,0x48,0x83,0xc4,0x20,
0x5b,0xc3};
// Expected leading bytes of engine::string_assign.
inline constexpr std::array<unsigned char, 40> assign_string_prefix{
0x48,0x89,0x5c,0x24,0x10,0x48,0x89,0x6c,0x24,0x18,0x56,0x57,0x41,0x56,0x48,0x83,
0xec,0x20,0x48,0x8b,0x19,0x48,0x8d,0x2d,0xc8,0x70,0xd7,0x05,0x41,0x8b,0xf0,0x4c,
0x8b,0xf2,0x48,0x8b,0xf9,0x48,0x85,0xdb};
// Error constructor.
inline constexpr std::uintptr_t construct_error = engine::construct_error;
inline constexpr std::array<unsigned char, 40> construct_error_prefix{
0x48,0x89,0x5c,0x24,0x08,0x48,0x89,0x74,0x24,0x10,0x57,0x48,0x83,0xec,0x20,0x48,
0x8b,0xf1,0x49,0x8b,0xd8,0x49,0x8b,0xc8,0x8b,0xfa,0xe8,0xcd,0xfb,0xc2,0x04,0x44,
0x8b,0xc0,0x48,0x8b,0xd3,0x48,0x8b,0xce};
// Promise completion.
inline constexpr std::uintptr_t complete_promise = engine::complete_promise;
inline constexpr std::array<unsigned char, 40> complete_promise_prefix{
0x48,0x83,0xec,0x48,0x4c,0x8b,0xd2,0x48,0x8b,0x11,0x48,0x8b,0x02,0x4c,0x8b,0x48,
0x40,0x4d,0x85,0xc9,0x74,0x14,0x80,0x78,0x68,0x00,0x75,0x0e,0x49,0x8b,0xd0,0x49,
0x8b,0xca,0x41,0xff,0xd1,0x48,0x83,0xc4};
// Result vector destructor.
inline constexpr std::uintptr_t destroy_vector = 0x76c370;
inline constexpr std::array<unsigned char, 40> destroy_vector_prefix{
0x48,0x89,0x74,0x24,0x18,0x41,0x56,0x48,0x83,0xec,0x20,0x48,0x8b,0x31,0x4c,0x8b,
0xf1,0xe8,0x7a,0xf7,0x65,0x03,0x48,0x3b,0xf0,0x74,0x79,0x49,0x8b,0x06,0x48,0x89,
0x5c,0x24,0x30,0x48,0x8b,0xde,0x48,0x89};
// Expected leading bytes of engine::native_text_release.
inline constexpr std::array<unsigned char, 40> destroy_string_prefix{
0x48,0x8b,0x09,0x48,0x8d,0x05,0xaa,0x86,0xd7,0x05,0x48,0x3b,0xc8,0x0f,0x85,0xbd,
0x9b,0xff,0xff,0xc3,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
0x48,0x89,0x5c,0x24,0x08,0x57,0x48,0x83};
// Future assignment.
inline constexpr std::uintptr_t assign_future = engine::assign_future;
inline constexpr std::array<unsigned char, 34> assign_future_prefix{
0x48,0x85,0xd2,0x74,0x16,0xb8,0x00,0x20,0x00,0x00,0x66,0x85,0x42,0x14,0x48,0x8b,
0xc1,0x75,0x0b,0xf0,0xff,0x42,0x10,0x48,0x89,0x11,0xc3,0x48,0x8b,0xc1,0x48,0x89,
0x11,0xc3};
// Native eID key getter.
inline constexpr std::uintptr_t eid_key = 0x749640;
inline constexpr std::array<unsigned char, 21> eid_key_prefix{
0x48,0x8d,0x05,0x65,0xfd,0x98,0x05,0x48,0x89,0x44,0x24,0x10,0x48,0x63,0xc1,0x48,
0x8b,0x44,0xc4,0x10,0xc3};
// Group member eID lookup.
inline constexpr std::uintptr_t find_member_eid = 0x16c4bd0;
inline constexpr std::array<unsigned char, 40> find_member_eid_prefix{
0x40,0x53,0x55,0x56,0x57,0x48,0x83,0xec,0x48,0x48,0x8d,0x71,0x60,0xc6,0x44,0x24,
0x20,0x00,0x48,0x8b,0xca,0xc6,0x44,0x24,0x2f,0x0f,0x48,0x8b,0xea,0x48,0xc7,0x44,
0x24,0x30,0x00,0x00,0x00,0x00,0xe8,0x21};
// Pointer to the client game manager.
inline constexpr std::uintptr_t client_game_manager = engine::client_game_manager;
}