NDK: use of undeclared identifier 'TPIDR_ELO'
NDK: assigning to '__int128' from incompatible type 'const _OWORD' NDK: assigning to '__int128' from incompatible type 'const _OWORD' NDK: assigning to '__int128' from incompatible type 'const _OWORD' NDK: assigning to '__int128' from incompatible type 'const _OWORD' NDK: assigning to '__int128' from incompatible type 'const _OWORD' NDK: assigning to '__int128' from incompatible type 'const _OWORD' NDK: assigning to '__int128' from incompatible type '_OWORD'
NDK: assigning to __int128' from incompatible type '_OWORD'
NDK: assigning to '__int128' from incompatible type '_OWORD'
Here is the cpp#include <list>
#include <vector>
#include <string.h>
#include <pthread.h>
#include <thread>
#include <cstring>
#include <jni.h>
#include <unistd.h>
#include <fstream>
#include <iostream>
#include <dlfcn.h>
#include <fcntl.h>
#include <sys/stat.h>
#include "Includes/Logger.h"
#include "Includes/obfuscate.h"
#include "Includes/Utils.h"
#include "KittyMemory/MemoryPatch.h"
#include "Includes/Macros.h"
#define targetLibName OBFUSCATE("libUE4.so")
#define targetLibName OBFUSCATE("libanogs.so")
#define targetLibName OBFUSCATE("libanort.so")
#define targetLibName OBFUSCATE("libhdmpve.so")
#define targetLibName ("libTBlueData.so")
#define targetLibName ("libRoosterNN.so")
#define targetLibName ("libCrashKit.so")
#define targetLibName ("libsigner.so")
#define targetLibName ("libAntsVoice.so")
#define _BYTE uint8_t
#define _WORD uint16_t
#define _DWORD uint32_t
#define _QWORD uint64_t
#define j_j__free
#define __OFSUB__
#define AnoSDKIoctlOld_0
#define HIWORD
#define JUMPOUT(x) goto *(void**)(x)
#define byte_4
#define _ReadStatusReg custom_ReadStatusReg
#define BYTE5(x) (((x) >> 32) & 0xFF)
#define BYTE4(x) (((x) >> 24) & 0xFF)
#define HIBYTE(x) (((x) >> 8) & 0xFF)
#define BYTE6(x) (((x) >> 40) & 0xFF)
#define BYTE1(x) ((x) & 0xFF)
#define BYTE3(x) (((x) >> 16) & 0xFF)
#define BYTE2(x) (((x) >> 8) & 0xFF)
#define ARM64_SYSREG
#define _WriteStatusReg
#define pkgName "com.pubg.imobile"
#define pkgName "com.tencent.ig"
#pragma pack(1)
struct patch_t {
_BYTE nPatchType;
DWORD dwAddress;
};
// Base addresses
DWORD TBlueBase = 0;
DWORD AntBase = 0;
DWORD BufferBase = 0;
DWORD HdmpveBase = 0;
DWORD roosterBase = 0;
DWORD roosterSize = 0;
DWORD roosterAlloc = 0;
DWORD EGLBase = 0;
DWORD EGLSize = 0;
DWORD EGLAlloc = 0;
DWORD libEgl_base = 0;
DWORD libcBase = 0;
DWORD libcSize = 0;
DWORD libcAlloc = 0;
DWORD libUE4Base = 0;
DWORD libanogsBase = 0;
DWORD libanortBase = 0;
DWORD libanogsAlloc = 0;
DWORD libUE4Alloc = 0;
unsigned int libanogsSize = 0;
unsigned int libUE4Size = 0;
// Patch opcodes
#define SAFE_RETURN_PATCH "00 00 80 D2 C0 03 5F D6"
constexpr const char XX[] = "00 00 80 D2 C0 03 5F D6";
constexpr const char RET[] = "C0 03 5F D6";
constexpr const char NOP[] = "1F 20 03 D5";
constexpr const char RET1[] = "01 00 80 D2 C0 03 5F D6";
// Helper: Read TPIDR_EL0 (ARM64 thread pointer register)
static inline unsigned __int64 custom_ReadStatusReg(int reg) {
(void)reg;
unsigned __int64 value;
__asm__ __volatile__("mrs %0, tpidr_el0" : "=r"(value));
return value;
}
#undef _ReadStatusReg
#define _ReadStatusReg custom_ReadStatusReg
// Define _OWORD for 128-bit SIMD values
typedef struct {
uint64_t low;
uint64_t high;
} __attribute__((aligned(16))) _OWORD;
#ifndef __int128
# define __int128 long long __attribute__((__mode__(__TI__)))
#endif
// Forward declarations for IDA-generated symbols
extern const _OWORD xmmword_A71C0;
extern const _OWORD xmmword_A73F0;
extern const _OWORD xmmword_A7450;
extern const _OWORD xmmword_EC708;
extern const _OWORD unk_EC718;
extern const _OWORD xmmword_EC728;
extern const char byte_EB26C;
extern const char byte_EC740;
// Stub functions for undefined subs
void nullsub_169(__int64, unsigned int, unsigned int, ...) { }
void sub_3B4480(char*, int) { }
void sub_3B474C(char*, unsigned int) { }
__int64 sub_3B4A70(char*, __int64) { return 0; }
__int64 sub_3B4060(__int64) { return 0; }
void sub_3B418C(__int64, char*) { }
void sub_3B4CE4(char*) { }
__int64 sub_387FE4(__int64) { return 0; }
__int64 sub_388040(__int64 a2, ...) { return 0; }
// Fix calling convention
#ifndef __fastcall
# define __fastcall
#endif
// Function prototypes
size_t getLibrarySize(const char *libraryName);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__int64 __fastcall h_sub_404D50(
__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5,
__int64 a6, __int64 a7, __int64 a8, __int64 a9, __int64 a10,
__int64 a11, __int64 a12, __int64 a13, __int64 a14, __int64 a15,
__int64 a16, __int64 a17, __int64 a18, __int64 a19, __int64 a20,
__int64 a21, __int64 a22, __int64 a23, __int64 a24, __int64 a25,
__int64 a26, __int64 a27, __int64 a28, __int64 a29, __int64 a30,
__int64 a31, __int64 a32, __int64 a33, __int64 a34, __int64 a35,
__int64 a36, __int64 a37, __int64 a38, __int64 a39, __int64 a40,
__int64 a41, __int64 a42, __int64 a43, __int64 a44, __int64 a45,
__int64 a46, __int64 a47)
{
__int64 v39; // x19
unsigned int v40; // w20
__int64 v41; // x21
__int64 v42; // x22
__int64 v43; // x23
__int64 *v44; // x24
__int64 *v45; // x25
__int64 v46; // x26
unsigned __int8 v48; // w8
__int64 v49; // x0
__int64 v50; // x1
__int64 v51; // x2
__int64 v52; // x3
__int64 v53; // x4
__int64 v54; // x5
__int64 v55; // x6
__int64 v56; // x7
__int64 v57; // x8
__int64 v58; // x9
__int64 v59; // x10
__int64 v60; // x11
__int64 v61; // x12
__int64 v62; // x13
__int64 v63; // x14
__int64 v64; // x15
__int64 v65; // x16
__int64 v66; // x17
__int64 v67; // x27
__int64 v68; // fp
unsigned __int64 v69; // sp
__int64 v70; // lr
unsigned __int64 v71; // [xsp+8h] [xbp+8h]
__int64 v72; // [xsp+10h] [xbp+10h]
__int64 v73; // [xsp+18h] [xbp+18h]
__int64 v74; // [xsp+20h] [xbp+20h]
__int64 v75; // [xsp+28h] [xbp+28h]
__int64 v76; // [xsp+30h] [xbp+30h]
__int64 v77; // [xsp+38h] [xbp+38h]
__int64 v78; // [xsp+40h] [xbp+40h]
__int64 v79; // [xsp+48h] [xbp+48h]
__int64 v80; // [xsp+50h] [xbp+50h]
__int64 v81; // [xsp+58h] [xbp+58h]
__int64 v82; // [xsp+60h] [xbp+60h]
__int64 v83; // [xsp+68h] [xbp+68h]
__int64 v84; // [xsp+70h] [xbp+70h]
__int64 v85; // [xsp+78h] [xbp+78h]
__int64 v86; // [xsp+80h] [xbp+80h]
__int64 v87; // [xsp+88h] [xbp+88h]
__int64 v88; // [xsp+90h] [xbp+90h]
__int64 v89; // [xsp+98h] [xbp+98h]
__int64 v90; // [xsp+A0h] [xbp+A0h]
__int64 v91; // [xsp+A8h] [xbp+A8h]
__int64 v92; // [xsp+B0h] [xbp+B0h]
__int64 v93; // [xsp+B8h] [xbp+B8h]
__int64 v94; // [xsp+C0h] [xbp+C0h]
__int64 v95; // [xsp+C8h] [xbp+C8h]
__int64 v96; // [xsp+D0h] [xbp+D0h]
__int64 v97; // [xsp+D8h] [xbp+D8h]
__int64 v98; // [xsp+E0h] [xbp+E0h]
__int64 v99; // [xsp+E8h] [xbp+E8h]
__int64 v100; // [xsp+F0h] [xbp+F0h]
__int64 v101; // [xsp+F8h] [xbp+F8h]
__int64 v102; // [xsp+100h] [xbp+100h]
__int64 v103; // [xsp+108h] [xbp+108h]
__int64 v104; // [xsp+110h] [xbp+110h]
__int64 v105; // [xsp+118h] [xbp+118h]
__int64 v106; // [xsp+120h] [xbp+120h]
__int64 v107; // [xsp+128h] [xbp+128h]
__int64 v108; // [xsp+130h] [xbp+130h]
__int64 v109; // [xsp+138h] [xbp+138h]
__int64 v110; // [xsp+140h] [xbp+140h]
__int64 v111; // [xsp+148h] [xbp+148h]
__int64 v112; // [xsp+150h] [xbp+150h]
__int64 v113; // [xsp+158h] [xbp+158h]
__int64 v114; // [xsp+160h] [xbp+160h]
__int64 v115; // [xsp+168h] [xbp+168h]
__int64 v116; // [xsp+170h] [xbp+170h]
__int64 v117; // [xsp+178h] [xbp+178h]
__int64 v118; // [xsp+180h] [xbp+180h]
__int64 v119; // [xsp+188h] [xbp+188h]
__int64 v120; // [xsp+190h] [xbp+190h]
__int64 v121; // [xsp+198h] [xbp+198h]
__int64 v122; // [xsp+1A0h] [xbp+1A0h]
__int64 v123; // [xsp+1A8h] [xbp+1A8h]
__int64 v124; // [xsp+1B0h] [xbp+1B0h]
__int64 v125; // [xsp+1B8h] [xbp+1B8h]
__int64 v126; // [xsp+1C0h] [xbp+1C0h]
__int64 v127; // [xsp+1C8h] [xbp+1C8h]
__int64 v128; // [xsp+1D0h] [xbp+1D0h]
__int64 v129; // [xsp+1D8h] [xbp+1D8h]
__int64 v130; // [xsp+1E0h] [xbp+1E0h]
__int64 v131; // [xsp+1E8h] [xbp+1E8h]
__int64 v132; // [xsp+1F0h] [xbp+1F0h]
__int64 v133; // [xsp+1F8h] [xbp+1F8h]
__int64 v134; // [xsp+200h] [xbp+200h]
__int64 v135; // [xsp+208h] [xbp+208h]
__int64 v136; // [xsp+210h] [xbp+210h]
__int64 v137; // [xsp+218h] [xbp+218h]
__int64 v138; // [xsp+220h] [xbp+220h]
__int64 v139; // [xsp+228h] [xbp+228h]
__int64 v140; // [xsp+230h] [xbp+230h]
__int64 v141; // [xsp+238h] [xbp+238h]
__int64 v142; // [xsp+240h] [xbp+240h]
__int64 v143; // [xsp+248h] [xbp+248h]
__int64 v144; // [xsp+250h] [xbp+250h]
__int64 v145; // [xsp+258h] [xbp+258h]
__int64 v146; // [xsp+260h] [xbp+260h]
__int64 v147; // [xsp+268h] [xbp+268h]
__int64 v148; // [xsp+270h] [xbp+270h]
__int64 v149; // [xsp+278h] [xbp+278h]
__int64 v150; // [xsp+280h] [xbp+280h]
__int64 v151; // [xsp+288h] [xbp+288h]
__int64 v152; // [xsp+290h] [xbp+290h]
__int64 v153; // [xsp+298h] [xbp+298h]
__int64 v154; // [xsp+2A0h] [xbp+2A0h]
__int64 v155; // [xsp+2A8h] [xbp+2A8h]
__int64 v156; // [xsp+2B0h] [xbp+2B0h]
__int64 v157; // [xsp+2B8h] [xbp+2B8h]
__int64 v158; // [xsp+2C0h] [xbp+2C0h]
__int64 v159; // [xsp+2C8h] [xbp+2C8h]
__int64 v160; // [xsp+2D0h] [xbp+2D0h]
__int64 v161; // [xsp+2D8h] [xbp+2D8h]
__int64 v162; // [xsp+2E0h] [xbp+2E0h]
__int64 v163; // [xsp+2E8h] [xbp+2E8h]
__int64 v164; // [xsp+2F0h] [xbp+2F0h]
__int64 v165; // [xsp+2F8h] [xbp+2F8h]
__int64 v166; // [xsp+300h] [xbp+300h]
__int64 v167; // [xsp+308h] [xbp+308h]
__int64 v168; // [xsp+310h] [xbp+310h]
__int64 v169; // [xsp+318h] [xbp+318h]
__int64 v170; // [xsp+320h] [xbp+320h]
__int64 v171; // [xsp+328h] [xbp+328h]
__int64 v172; // [xsp+330h] [xbp+330h]
__int64 v173; // [xsp+338h] [xbp+338h]
__int64 v174; // [xsp+340h] [xbp+340h]
__int64 v175; // [xsp+348h] [xbp+348h]
__int64 v176; // [xsp+350h] [xbp+350h]
__int64 v177; // [xsp+358h] [xbp+358h]
__int64 v178; // [xsp+360h] [xbp+360h]
__int64 v179; // [xsp+368h] [xbp+368h]
__int64 v180; // [xsp+370h] [xbp+370h]
__int64 v181; // [xsp+378h] [xbp+378h]
__int64 v182; // [xsp+380h] [xbp+380h]
__int64 v183; // [xsp+388h] [xbp+388h]
__int64 v184; // [xsp+390h] [xbp+390h]
__int64 v185; // [xsp+398h] [xbp+398h]
__int64 v186; // [xsp+3A0h] [xbp+3A0h]
__int64 v187; // [xsp+3A8h] [xbp+3A8h]
__int64 v188; // [xsp+3B0h] [xbp+3B0h]
__int64 v189; // [xsp+3B8h] [xbp+3B8h]
__int64 v190; // [xsp+3C0h] [xbp+3C0h]
__int64 v191; // [xsp+3C8h] [xbp+3C8h]
__int64 v192; // [xsp+3D0h] [xbp+3D0h]
__int64 v193; // [xsp+3D8h] [xbp+3D8h]
__int64 v194; // [xsp+3E0h] [xbp+3E0h]
__int64 v195; // [xsp+3E8h] [xbp+3E8h]
__int64 v196; // [xsp+3F0h] [xbp+3F0h]
__int64 v197; // [xsp+3F8h] [xbp+3F8h]
__int64 v198; // [xsp+400h] [xbp+400h]
__int64 v199; // [xsp+408h] [xbp+408h]
__int64 v200; // [xsp+410h] [xbp+410h]
__int64 v201; // [xsp+418h] [xbp+418h]
__int64 v202; // [xsp+420h] [xbp+420h]
__int64 v203; // [xsp+428h] [xbp+428h]
__int64 v204; // [xsp+430h] [xbp+430h]
__int64 v205; // [xsp+438h] [xbp+438h]
__int64 v206; // [xsp+440h] [xbp+440h]
__int64 v207; // [xsp+448h] [xbp+448h]
__int64 v208; // [xsp+450h] [xbp+450h]
__int64 v209; // [xsp+458h] [xbp+458h]
__int64 v210; // [xsp+460h] [xbp+460h]
__int64 v211; // [xsp+468h] [xbp+468h]
__int64 v212; // [xsp+470h] [xbp+470h]
__int64 v213; // [xsp+478h] [xbp+478h]
__int64 v214; // [xsp+480h] [xbp+480h]
__int64 v215; // [xsp+488h] [xbp+488h]
__int64 v216; // [xsp+490h] [xbp+490h]
__int64 v217; // [xsp+498h] [xbp+498h]
__int64 v218; // [xsp+4A0h] [xbp+4A0h]
__int64 v219; // [xsp+4A8h] [xbp+4A8h]
__int64 v220; // [xsp+4B0h] [xbp+4B0h]
__int64 v221; // [xsp+4B8h] [xbp+4B8h]
__int64 v222; // [xsp+4C0h] [xbp+4C0h]
__int64 v223; // [xsp+4C8h] [xbp+4C8h]
v39 = a39;
v40 = a40;
v41 = a1;
v42 = a2;
v43 = a43;
v44 = (__int64 *)a44;
v45 = (__int64 *)a45;
v46 = a46;
// 🔥 NEUTRALIZED LINE: replace original opcode fetch with immediate return
return (v48 = 0), 0LL;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void __fastcall h_sub_425864(__int64 a1)
{
char *v1;
float v2;
float v3;
double v4;
double v5;
float v6;
float v7;
float v8;
unsigned __int64 StatusReg;
__int64 v10;
_QWORD *v11;
__int64 v12;
__int64 v13;
__int64 v14;
unsigned int *v15;
_DWORD *v16;
unsigned int v17;
__int64 v18;
__int64 v19;
__int64 v20;
__int64 v21;
int v22;
long double v23;
char *v24;
__int64 v25;
int v26;
__int64 v27;
_BYTE *v28;
char v29;
__int64 v30;
__int64 v31;
__int64 v32;
float v33;
__int64 v34;
_BYTE *v35;
char v36;
__int64 v37;
__int64 v38;
__int64 v39;
float v40;
unsigned int v41;
int v42;
__int64 v43;
__int64 v44;
int v45;
int v46;
int v47;
__int64 v48;
__int64 v49;
char v50;
__int64 v51;
int v52;
__int64 v53;
double v54;
unsigned int v55;
__int64 v56;
__int64 v57;
char v58;
__int64 v59;
int v60;
__int64 v61;
double v62;
__int64 v63;
__int64 v64;
char v65;
__int64 v66;
int v67;
__int64 v68;
int v69;
unsigned int v70;
__int64 v71;
__int64 v72;
char v73;
__int64 v74;
int v75;
unsigned int v76;
int v77;
__int64 v78;
__int64 v79;
unsigned __int64 v80;
unsigned int v81;
__int64 v82;
unsigned int v83;
__int64 v84;
int v85;
unsigned int v86;
__int64 v87;
__int64 v88;
unsigned int v89;
int v90;
__int64 v91;
__int64 v92;
unsigned int v93;
__int64 v94;
unsigned int v95;
__int64 v96;
int v97;
unsigned int v98;
__int64 v99;
unsigned int v100;
__int64 v101;
unsigned int v102;
__int64 v103;
__int64 v104;
__int64 v105;
__int64 v106;
unsigned int v107;
__int64 v108;
unsigned int v109;
__int64 v110;
__int64 v111;
__int64 v112;
__int64 v113;
int v114;
__int64 v115;
__int64 v116;
__int64 v117;
const char *v118;
__int64 v119;
__int64 v120;
char v121;
__int64 v122;
int v123;
__int64 v124;
__int64 v125;
__int64 v126;
unsigned int v127;
__int64 v128;
unsigned int v129;
__int64 v130;
__int64 v131;
int v132;
__int64 v133;
__int64 v134;
__int64 v135;
int v136;
__int64 v137;
__int64 v138;
unsigned int v139;
__int64 v140;
__int64 v141;
_BYTE *v142;
char v143;
__int64 v144;
__int64 v145;
char *v146;
__int64 v147;
int v148;
__int64 *v149;
_QWORD *v150;
__int64 v151;
unsigned int v152;
int v153;
__int64 v154;
__int64 v155;
int v156;
__int64 v157;
unsigned int v158;
__int64 v159;
int v160;
__int64 v161;
__int64 v162;
__int64 v163;
char v164;
__int64 v165;
int v166;
__int64 v167;
_BYTE *v168;
char v169;
float v170;
__int64 v171;
__int64 v172;
__int64 v173;
void *v174;
char **v175;
int v176;
int v177;
__int64 v178;
__int64 v179;
__int64 v180;
__int64 v181;
int v182;
int v183;
int v184;
__int64 v185;
void *v186;
__int64 v187;
__int64 v188;
__int64 v189;
int v190;
int v191;
int v192;
char *v193;
__int64 v194;
void *v195;
void *v196;
unsigned __int8 v197;
void *v198;
int v199;
float v200;
__int64 v201;
__int64 v202;
int v203;
__int64 v204;
float *v205;
int v206;
float v207;
__int64 v208;
__int64 v209;
int v210;
__int64 v211;
int v212;
__int64 v213;
float *v214;
__int64 v215;
int v216;
__int64 v217;
int v218;
__int64 v219;
int v220;
__int64 v221;
float v222;
double v223;
__int64 v224;
float v225;
__int64 v226;
int v227;
int v228;
__int64 v229;
float v230;
int v231;
__int64 v232;
float v233;
__int64 v234;
int v235;
__int64 v236;
__int64 v237;
int v238;
int v239;
__int64 v240;
__int64 v241;
int v242;
__int64 v243;
int v244;
__int64 v245;
int v246;
__int64 v247;
int v248;
float v249;
float v250;
int v251;
__int64 v252;
int v253;
float *v254;
__int64 v255;
float *v256;
__int64 v257;
int v258;
int v259;
__int64 v260;
float *v261;
__int64 v262;
int v263;
__int64 v264;
__int64 v265;
float *v266;
__int64 v267;
int v268;
__int64 v269;
__int64 v270;
__int64 v271;
__int64 v272;
__int64 v273;
__int64 v274;
__int64 v275;
__int64 v276;
__int64 v277;
__int64 v278;
__int64 v279;
__int64 v280;
__int64 v281;
int v282;
float v283;
__int64 v284;
int v285;
float v286;
__int64 v287;
__int64 v288;
__int64 v289;
int v290;
__int64 v291;
__int64 v292;
__int64 v293;
int v294;
__int64 v295;
__int64 v296;
__int64 v297;
__int64 v298;
double v299;
__int64 v300;
__int64 v301;
int v302;
__int64 v303;
__int64 v304;
__int64 v305;
__int64 v306;
int v307;
__int64 v308;
__int64 v309;
__int64 v310;
int v311;
__int64 v312;
__int64 v313;
int v314;
__int64 v315;
__int64 v316;
__int64 v317;
__int64 v318;
int v319;
__int64 v320;
__int64 v321;
__int64 v322;
__int64 v323;
int v324;
__int64 v325;
__int64 v326;
float *v327;
__int64 v328;
__int64 v329;
int v330;
int v331;
__int64 v332;
__int64 v333;
__int64 v334;
int v335;
float *v336;
__int64 v337;
__int64 v338;
double v339;
double v340;
double v341;
bool v342;
double v343;
bool v344;
__int64 v345;
__int64 v346;
__int64 v347;
int v348;
float *v349;
__int64 v350;
__int64 v351;
double v352;
double v353;
bool v354;
double v355;
double v356;
int v358;
__int64 v359;
__int64 v360;
int v361;
int v362;
__int64 v363;
__int64 v364;
float v365;
__int64 v366;
__int64 v367;
__int64 v368;
__int64 v369;
__int64 v370;
int v371;
float v372;
__int64 v373;
float *v374;
__int64 v375;
__int64 v376;
__int64 v377;
int v378;
__int64 v379;
double v380;
double v381;
__int64 v382;
int v383;
__int64 v384;
__int64 v385;
__int64 v386;
__int64 v387;
__int64 v388;
__int64 v389;
__int64 v390;
__int64 v391;
__int64 v392;
__int64 v393;
__int64 v394;
__int64 v395;
__int64 v396;
int v397;
__int64 v398;
__int64 v399;
__int64 v400;
__int64 v401;
__int64 v402;
__int64 v403;
__int64 v404;
__int64 v405;
int v406;
__int64 v407;
__int64 v408;
__int64 v409;
int v410;
int v411;
int v412;
__int64 v413;
__int64 v414;
__int64 v415;
__int64 v416;
__int64 v417;
__int64 v418;
int v419;
__int64 v420;
int v421;
int v422;
__int64 v423;
int v424;
float v425;
__int64 v426;
int v427;
__int64 v428;
__int64 v429;
float v430;
float v431;
__int64 v434;
__int64 v435;
__int64 v436;
bool v437;
float v438;
bool v439;
__int64 v440;
__int64 v441;
int v442;
__int64 v443;
__int64 v444;
__int64 v445;
__int64 i;
__int64 v447;
double v448;
double v449;
float v450;
__int64 v451;
int v452;
__int64 v453;
_QWORD *v454;
_QWORD *v455;
unsigned __int64 v456;
unsigned __int64 v457;
int v458;
float v459;
int v460;
int v461;
float v462;
__int64 v463;
__int64 v464;
float v465;
float v466;
int v467;
int v468;
float v469;
float v470;
int v471;
int v472;
__int64 v473;
__int64 v474;
__int64 v475;
char *v476;
__int64 v477;
__int64 v478;
unsigned int *v479;
__int64 v480;
unsigned __int8 *v481;
__int64 *v482;
unsigned int v483;
_DWORD **v484;
_BYTE v485[32];
__int128 v486;
__int128 v487;
__int128 v488;
__int64 v489;
__int128 v490;
__int128 v491;
__int128 v492;
_OWORD v493[4];
__int128 v494;
__int128 v495;
__int128 v496;
__int128 v497;
__int128 v498;
__int128 v499;
__int128 v500;
__int128 v501;
__int128 v502;
__int128 v503;
__int128 v504;
__int128 v505;
__int128 v506;
__int128 v507;
__int64 v508;
__int64 v509;
StatusReg = _ReadStatusReg(TPIDR_EL0);
v509 = *(_QWORD *)(StatusReg + 40);
v505 = xmmword_A71C0;
v506 = xmmword_A73F0;
v503 = 0u;
v504 = 0u;
v501 = 0u;
v502 = 0u;
v499 = 0u;
v500 = 0u;
v497 = 0u;
v498 = 0u;
v495 = 0u;
v496 = 0u;
v494 = 0u;
v492 = 0u;
memset(v493, 0, sizeof(v493));
v490 = 0u;
v491 = 0u;
v486 = xmmword_EC708;
v487 = unk_EC718;
v507 = xmmword_A7450;
v508 = 6;
v488 = xmmword_EC728;
v489 = 13;
v11 = (_QWORD *)(a1 + 8);
v10 = *(_QWORD *)(a1 + 8);
v12 = a1;
if ( (unsigned __int64)&v490 >= v10 + 304 || v10 + 16 >= (unsigned __int64)&v505 )
{
v490 = *(_OWORD *)(v10 + 16);
v491 = *(_OWORD *)(v10 + 32);
v492 = *(_OWORD *)(v10 + 48);
v493[0] = *(_OWORD *)(v10 + 64);
v493[1] = *(_OWORD *)(v10 + 80);
v493[2] = *(_OWORD *)(v10 + 96);
v493[3] = *(_OWORD *)(v10 + 112);
v494 = *(_OWORD *)(v10 + 128);
v495 = *(_OWORD *)(v10 + 144);
v496 = *(_OWORD *)(v10 + 160);
v497 = *(_OWORD *)(v10 + 176);
v498 = *(_OWORD *)(v10 + 192);
v499 = *(_OWORD *)(v10 + 208);
v500 = *(_OWORD *)(v10 + 224);
v501 = *(_OWORD *)(v10 + 240);
v502 = *(_OWORD *)(v10 + 256);
v503 = *(_OWORD *)(v10 + 272);
v504 = *(_OWORD *)(v10 + 288);
}
else
{
v490 = *(_OWORD *)(v10 + 16);
v491 = *(_OWORD *)(v10 + 32);
v492 = *(_OWORD *)(v10 + 48);
v493[0] = *(_OWORD *)(v10 + 64);
v493[1] = *(_OWORD *)(v10 + 80);
v493[2] = *(_OWORD *)(v10 + 96);
v493[3] = *(_OWORD *)(v10 + 112);
v494 = *(_OWORD *)(v10 + 128);
v495 = *(_OWORD *)(v10 + 144);
v496 = *(_OWORD *)(v10 + 160);
v497 = *(_OWORD *)(v10 + 176);
v498 = *(_OWORD *)(v10 + 192);
v499 = *(_OWORD *)(v10 + 208);
v500 = *(_OWORD *)(v10 + 224);
v501 = *(_OWORD *)(v10 + 240);
v502 = *(_OWORD *)(v10 + 256);
v503 = *(_OWORD *)(v10 + 272);
v14 = *(_QWORD *)(v10 + 288);
v13 = *(_QWORD *)(v10 + 296);
*(_QWORD *)&v504 = v14;
*((_QWORD *)&v504 + 1) = v13;
}
v15 = (unsigned int *)(a1 + 56);
v483 = *(_DWORD *)(a1 + 56);
v16 = *(_DWORD **)(a1 + 48);
v484 = (_DWORD **)(a1 + 48);
if ( *v16 != 8 )
return;
v482 = (__int64 *)(a1 + 24);
v481 = (unsigned __int8 *)(a1 + 97);
v479 = (unsigned int *)(a1 + 56);
v480 = a1 + 88;
v17 = 0;
v473 = a1 + 88;
v478 = a1 + 88;
v475 = a1 + 88;
v477 = a1 + 88;
v476 = (char *)(a1 + 88);
v474 = a1 + 88;
if ( *(_BYTE *)(a1 + 72) )
goto LABEL_11;
while ( 2 )
{
v20 = *v11;
v18 = *(_QWORD *)(*v11 + 304LL);
v21 = (unsigned int)v18;
v344 = (unsigned __int64)(unsigned int)v18 > *(_QWORD *)(*v11 + 312LL);
*(_BYTE *)(*v11 + 376LL) = 1;
if ( v344 )
{
*v16 = 1;
*(_BYTE *)(v20 + 376) = 0;
v442 = *v481;
if ( v442 == 2 )
{
sub_3B4480(v485, 258);
sub_3B474C(v485, *v15);
v444 = sub_3B4A70(v485, *(_QWORD *)(*v11 + 304LL));
v445 = sub_3B4060(v444);
sub_3B418C(v445, v485);
sub_3B4CE4(v485);
}
else if ( v442 == 1 )
{
(*(void (__fastcall **)(_QWORD, _QWORD))(*(_QWORD *)(*(_QWORD *)v480 + 8LL) + 688LL))((unsigned int)v18, *v15);
}
return;
}
// 🔥 NEUTRALIZED LINE BELOW 🔥
return;
// Original line was:
// v22 = *(unsigned __int8 *)(*(_QWORD *)(*(_QWORD *)(v12 + 24) + 8LL) + (unsigned int)v18);
nullsub_169(v12, v483, (unsigned int)v18, v483, (unsigned int)v18, v483, (unsigned int)v18, v483);
v24 = v1;
v1 = (char *)byte_EC740;
switch ( v22 )
{
// ... hundreds of lines of VM instructions ...
}
}
LABEL_11:
return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__int64 __fastcall h_sub_3E8508(__int64 result, unsigned __int8 *a2, long double a3)
{
unsigned int v3;
int v4;
unsigned int v5;
float v6;
float v7;
__int64 v8;
unsigned int v10;
__int64 v11;
__int64 v12;
__int64 v13;
__int64 v14;
__int64 v15;
__int64 v16;
__int64 v17;
__int64 v18;
__int64 v19;
int v20;
unsigned int v21;
__int64 v22;
unsigned int v23;
__int64 v24;
int v25;
char v26;
int v27;
__int64 v28;
__int64 v29;
__int64 v30;
__int64 v31;
__int64 v32;
__int64 v33;
int v34;
unsigned int v35;
__int64 v36;
__int64 v37;
__int64 v38;
char v39;
__int64 v40;
int v41;
__int64 v42;
__int64 v43;
__int64 v44;
int v45;
int v46;
int v47;
unsigned int v48;
__int64 v49;
unsigned int v50;
__int64 v51;
int v52;
int v53;
unsigned int v54;
__int64 v55;
unsigned int v56;
__int64 v57;
unsigned int v58;
__int64 v59;
unsigned int v60;
__int64 v61;
int v62;
__int64 v63;
int v64;
unsigned __int64 v65;
int v66;
__int64 v67;
int v68;
int v69;
unsigned int v70;
__int64 v71;
__int64 v72;
__int64 v73;
char v74;
__int64 v75;
int v76;
__int64 v77;
unsigned int v78;
__int64 v79;
int v80;
int v81;
int v82;
__int64 v83;
int v84;
int v85;
int v86;
unsigned int v87;
__int64 v88;
int v89;
unsigned int v90;
__int64 v91;
__int64 v92;
__int64 v93;
char v94;
__int64 v95;
int v96;
__int64 v97;
unsigned int v98;
__int64 v99;
unsigned int v100;
__int64 v101;
int v102;
int v103;
int v104;
unsigned int v105;
__int64 v106;
unsigned int v107;
__int64 v108;
int v109;
__int64 v110;
__int64 v111;
__int64 v112;
unsigned int v113;
__int64 v114;
__int64 v115;
__int64 v116;
char v117;
__int64 v118;
int v119;
__int64 v120;
unsigned int v121;
__int64 v122;
unsigned int v123;
__int64 v124;
__int64 v125;
int v126;
__int64 v127;
__int64 v128;
int v129;
__int64 v130;
int v131;
__int64 v132;
int v133;
__int64 v134;
int v135;
float v136;
__int64 v137;
__int64 v138;
float v139;
__int64 v140;
__int64 v141;
float v142;
__int64 v143;
__int64 v144;
float v145;
__int64 v146;
__int64 v147;
__int64 v148;
int v149;
__int64 v150;
int v151;
__int64 v152;
__int64 v153;
__int64 v154;
int v155;
__int64 v156;
int v157;
int v158;
unsigned int v159;
__int64 v160;
__int64 v161;
__int64 v162;
__int64 v163;
int v164;
__int64 v165;
__int64 v166;
bool v167;
float v168;
float v170;
__int64 v171;
int v172;
__int64 v173;
__int64 v174;
__int64 v175;
int v176;
int v177;
unsigned int v178;
__int64 v179;
__int64 v180;
int v181;
__int64 v182;
__int64 v183;
__int64 v184;
int v185;
float v186;
bool v187;
float v188;
__int64 v190;
__int64 v191;
double v192;
double v193;
double v194;
bool v195;
double v196;
unsigned int v198;
__int64 v199;
unsigned int v200;
__int64 v201;
__int64 v202;
__int64 v203;
__int64 v204;
int v205;
__int64 v206;
int v207;
__int64 v208;
int v209;
__int64 v210;
int v211;
__int64 v212;
int v213;
__int64 v214;
int v215;
__int64 v216;
int v217;
__int64 v218;
__int64 v219;
__int64 v220;
int v221;
__int64 v222;
__int64 v223;
__int64 v224;
__int64 v225;
int v226;
__int64 v227;
__int64 v228;
int v229;
__int64 v230;
int v231;
__int64 v232;
int v233;
__int64 v234;
int v235;
__int64 v236;
int v237;
__int64 v238;
int v239;
__int64 v240;
int v241;
__int64 v242;
__int64 v243;
__int64 v244;
__int64 v245;
unsigned int v246;
__int64 v247;
unsigned int v248;
__int64 v249;
__int64 v250;
int v251;
int v252;
unsigned int v253;
__int64 v254;
__int64 v255;
__int64 v256;
int v257;
__int64 v258;
__int64 v259;
int v260;
unsigned int v261;
__int64 v262;
__int64 v263;
__int64 v264;
int v265;
unsigned int v266;
__int64 v267;
int v268;
unsigned int v269;
__int64 v270;
double v271;
double v272;
bool v273;
double v274;
double v275;
int v277;
__int64 v278;
__int64 v279;
unsigned int v280;
__int64 v281;
unsigned int v282;
__int64 v283;
__int64 v284;
int v285;
int v286;
unsigned int v287;
__int64 v288;
__int64 v289;
__int64 v290;
int v291;
unsigned int v292;
__int64 v293;
int v294;
__int64 v295;
__int64 v296;
__int64 v297;
__int64 v298;
int v299;
unsigned int v300;
__int64 v301;
int v302;
unsigned int v303;
__int64 v304;
__int64 v305;
int v306;
__int64 v307;
__int64 v308;
int v309;
__int64 v310;
__int64 v311;
unsigned int v312;
__int64 v313;
unsigned int v314;
__int64 v315;
__int64 v316;
int v317;
int v318;
unsigned int v319;
__int64 v320;
__int64 v321;
__int64 v322;
float v323;
__int64 v324;
__int64 v325;
__int64 v326;
int v327;
__int64 v328;
__int64 v329;
float v330;
__int64 v331;
__int64 v332;
int v333;
__int64 v334;
__int64 v335;
float v336;
__int64 v337;
__int64 v338;
int v339;
__int64 v340;
__int64 v341;
float v342;
__int64 v343;
__int64 v344;
int v345;
__int64 v346;
__int64 v347;
int v348;
__int64 v349;
__int64 v350;
__int64 v351;
__int64 v352;
__int64 v353;
__int64 v354;
__int64 v355;
__int64 v356;
int v357;
unsigned int v358;
__int64 v359;
int v360;
unsigned int v361;
__int64 v362;
__int64 v363;
int v364;
__int64 v365;
__int64 v366;
__int64 v367;
__int64 v368;
__int64 v369;
__int64 v370;
__int64 v371;
__int64 v372;
_BYTE v373[32];
int v374;
int v375;
__int64 v376;
// 🔥 NEUTRALIZED LINE: replaced __break(1u); with immediate return
return result;
v8 = result;
v376 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
switch ( *a2 )
{
case 2u:
// ... hundreds of lines of VM instructions ...
default:
break;
}
return result;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__int64 __fastcall h_sub_397138(
int a1,
__int64 a2,
_QWORD *a3,
__int64 a4,
__int64 a5,
__int64 a6,
__int64 a7,
__int64 a8)
{
__int64 v9;
__int64 v10;
int i53;
int v12;
int i52;
unsigned int v14;
__int64 v15;
__int64 v16;
int i51;
int v18;
int i50;
unsigned int v20;
__int64 v21;
__int64 v22;
int i49;
int v24;
int i48;
unsigned int v26;
__int64 v27;
__int64 v28;
int i47;
int v30;
int i46;
unsigned int v32;
__int64 v33;
__int64 v34;
int i45;
int v36;
int i44;
unsigned int v38;
__int64 v39;
__int64 v40;
int i43;
int v42;
int i42;
unsigned int v44;
__int64 v45;
__int64 v46;
int i41;
int v48;
int i40;
unsigned int v50;
__int64 v51;
__int64 v52;
int i39;
int v54;
int i38;
unsigned int v56;
__int64 v57;
__int64 v58;
int i37;
int v60;
int i36;
unsigned int v62;
__int64 v63;
__int64 v64;
int i35;
int v66;
int i34;
unsigned int v68;
__int64 v69;
__int64 v70;
__int64 v71;
int i33;
int v73;
int i32;
unsigned int v75;
__int64 v76;
__int64 v77;
__int64 v78;
int i31;
int v80;
int i30;
unsigned int v82;
__int64 v83;
__int64 v84;
__int64 v85;
int i29;
int v87;
int i28;
unsigned int v89;
__int64 v90;
__int64 v91;
__int64 v92;
int i27;
int v94;
int i26;
unsigned int v96;
__int64 v97;
__int64 v98;
__int64 v99;
int i25;
int v101;
int i24;
unsigned int v103;
__int64 v104;
__int64 v105;
__int64 v106;
int i23;
int v108;
int i22;
unsigned int v110;
__int64 v111;
__int64 v112;
__int64 v113;
int i21;
int v115;
int i20;
unsigned int v117;
__int64 v118;
__int64 v119;
__int64 v120;
int i19;
int v122;
int i18;
unsigned int v124;
__int64 v125;
__int64 v126;
__int64 v127;
int i17;
int v129;
int i16;
unsigned int v131;
__int64 v132;
__int64 v133;
__int64 v134;
int i15;
int v136;
int i14;
unsigned int v138;
__int64 v139;
__int64 v140;
int i13;
int v142;
int i12;
unsigned int v144;
__int64 v145;
__int64 v146;
int i11;
int v148;
int i10;
unsigned int v150;
__int64 v151;
__int64 v152;
int i9;
int v154;
int i8;
unsigned int v156;
__int64 v157;
__int64 v158;
int i7;
int v160;
int i6;
unsigned int v162;
__int64 v163;
__int64 v164;
int i5;
int v166;
int i4;
unsigned int v168;
__int64 v169;
__int64 v170;
int i3;
int v172;
int i2;
unsigned int v174;
__int64 v175;
__int64 v176;
int i1;
int v178;
int nn;
unsigned int v180;
__int64 v181;
__int64 v182;
int mm;
int v184;
int kk;
unsigned int v186;
__int64 v187;
__int64 v188;
int jj;
int v190;
int ii;
unsigned int v192;
__int64 v193;
__int64 v194;
int n;
int v196;
int m;
int v198;
__int64 v199;
__int64 v200;
int k;
int v202;
int j;
unsigned int v204;
int i;
__int64 v206;
__int64 v207;
__int128 v208;
__int64 v487 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
// 🔥 NEUTRALIZED LINE BELOW 🔥
return 0LL;
// Original line was:
// v207 = 0;
for ( i = 0; i < (int)a4; ++i );
if ( a2 )
{
switch ( a1 )
{
case 1:
v207 = sub_387FE4(a2);
break;
case 2:
v207 = sub_388040(a2, *a3, a3[1], a3[2], a3[3]);
break;
// ... cases ...
}
LABEL_660:
v206 = v207;
}
else
{
v206 = 0;
}
_ReadStatusReg(TPIDR_EL0);
return v206;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void __fastcall h_sub_3F2110(__int64 a1, unsigned __int8 *a2, long double a3)
{
float v3;
__int64 v4;
int v5;
__int64 v6;
float v7;
float v8;
float v10;
unsigned __int8 *v12;
unsigned int v13;
__int64 v14;
__int64 v15;
__int64 v16;
float v17;
__int64 v18;
int v19;
__int64 v20;
int v21;
__int64 v22;
__int64 v23;
float v24;
__int64 v25;
__int64 v26;
int v27;
int v28;
__int64 v29;
unsigned __int64 v30;
unsigned __int64 v31;
__int64 v32;
__int64 v33;
__int64 v34;
int v35;
unsigned __int64 v36;
unsigned __int64 v37;
unsigned __int64 v38;
unsigned __int64 v39;
__int64 v40;
__int64 v41;
char v42;
__int64 v43;
int v44;
__int64 v45;
unsigned __int64 v46;
unsigned __int64 v47;
char v48;
int v49;
__int64 v50;
__int64 v51;
__int64 v52;
__int64 v53;
void *v54;
const char *v55;
__int64 v56;
__int64 v57;
__int64 v58;
__int64 v59;
__int64 v60;
const char *v61;
int v62;
__int64 v63;
int v64;
__int64 v65;
__int64 v66;
__int64 v67;
unsigned __int64 v68;
unsigned __int64 v69;
__int64 v70;
__int64 v71;
char v72;
__int64 v73;
int v74;
__int64 v75;
__int64 v76;
__int64 v77;
__int64 v78;
__int64 v79;
__int64 v80;
char v81;
__int64 v82;
int v83;
__int64 v84;
int v85;
int v86;
int v87;
__int64 v88;
__int64 v89;
int v90;
__int64 v91;
__int64 v92;
int v93;
unsigned __int64 v94;
unsigned __int64 v95;
char v96;
unsigned __int64 v97;
unsigned __int64 v98;
__int64 v99;
__int64 v100;
int v101;
int v102;
int v103;
int v104;
unsigned __int64 v105;
unsigned __int64 v106;
unsigned __int64 v107;
unsigned __int64 v108;
__int64 v109;
__int64 v110;
char v111;
__int64 v112;
int v113;
__int64 v114;
int v115;
int v116;
unsigned __int64 v117;
unsigned __int64 v118;
__int64 v119;
__int64 v120;
unsigned __int64 v121;
unsigned __int64 v122;
__int64 v123;
__int64 v124;
__int64 v125;
int v126;
__int64 v127;
__int64 v128;
__int64 v129;
__int64 v130;
int v131;
__int64 v132;
int v133;
__int64 v134;
__int64 v135;
char v136;
__int64 v137;
int v138;
__int64 v139;
int v140;
int v141;
int v142;
int v143;
__int64 v144;
int v145;
__int64 v146;
__int64 v147;
unsigned __int64 v148;
unsigned __int64 v149;
unsigned __int64 v150;
__int64 v151;
__int64 v152;
__int64 v153;
int v154;
__int64 v155;
int v156;
_BYTE *v157;
char v158;
__int64 v159;
__int64 v160;
int v161;
unsigned __int8 *v162;
__int64 v163;
float v164;
__int64 v165;
__int64 v166;
float *v167;
__int64 v168;
__int64 v169;
int v170;
__int64 v171;
int v172;
char *v173;
__int64 v174;
void *v175;
void *v176;
unsigned __int8 v177;
void *v178;
unsigned int v179;
__int64 v180;
int v181;
char *v182;
__int64 v183;
void *v184;
__int64 v185;
_DWORD *v186;
__int64 v187;
__int64 v188;
int v189;
__int64 v190;
int v191;
__int64 v192;
int v193;
__int64 v194;
int v195;
float *v196;
int v197;
__int64 v198;
int v199;
__int64 v200;
int v201;
float v202;
__int64 v203;
__int64 v204;
float v205;
__int64 v206;
__int64 v207;
float *v208;
int v209;
int v210;
__int64 v211;
int v212;
float v213;
__int64 v214;
__int64 v215;
unsigned int v216;
float v217;
__int64 v218;
__int64 v219;
int v220;
__int64 v221;
__int64 v222;
int v223;
int v224;
int v225;
__int64 v226;
__int64 v227;
int v228;
__int64 v229;
int v230;
__int64 v231;
int v232;
int v233;
int v234;
int v235;
__int64 v236;
__int64 v237;
__int64 v238;
int v239;
__int64 v240;
__int64 v241;
bool v242;
float v243;
float v245;
__int64 v246;
__int64 v247;
__int64 v248;
__int64 v249;
__int64 v250;
int v251;
__int64 v252;
__int64 v253;
__int64 v254;
__int64 v255;
int v256;
__int64 v257;
__int64 v258;
float v259;
bool v260;
float v261;
__int64 v263;
__int64 v264;
__int64 v265;
__int64 v266;
__int64 v267;
__int64 v268;
__int64 v269;
__int64 v270;
__int64 v271;
__int64 v272;
__int64 v273;
__int64 v274;
int v275;
__int64 v276;
int v277;
__int64 v278;
int v279;
__int64 v280;
__int64 v281;
int v282;
__int64 v283;
int v284;
__int64 v285;
int v286;
__int64 v287;
__int64 v288;
__int64 v289;
__int64 v290;
__int64 v291;
__int64 v292;
__int64 v293;
__int64 v294;
__int64 v295;
__int64 v296;
__int64 v297;
__int64 v298;
__int64 v299;
unsigned int v300;
__int64 v301;
int v302;
unsigned int v303;
__int64 v304;
__int64 v305;
int v306;
__int64 v307;
__int64 v308;
int v309;
__int64 v310;
__int64 v311;
unsigned int v312;
__int64 v313;
unsigned int v314;
__int64 v315;
__int64 v316;
int v317;
int v318;
unsigned int v319;
__int64 v320;
__int64 v321;
__int64 v322;
float v323;
__int64 v324;
__int64 v325;
__int64 v326;
int v327;
__int64 v328;
__int64 v329;
float v330;
__int64 v331;
__int64 v332;
int v333;
__int64 v334;
__int64 v335;
float v336;
__int64 v337;
__int64 v338;
int v339;
__int64 v340;
__int64 v341;
float v342;
__int64 v343;
__int64 v344;
int v345;
__int64 v346;
__int64 v347;
int v348;
__int64 v349;
__int64 v350;
__int64 v351;
__int64 v352;
__int64 v353;
__int64 v354;
__int64 v355;
__int64 v356;
int v357;
unsigned int v358;
__int64 v359;
int v360;
unsigned int v361;
__int64 v362;
__int64 v363;
int v364;
__int64 v365;
__int64 v366;
__int64 v367;
__int64 v368;
__int64 v369;
__int64 v370;
__int64 v371;
__int64 v372;
_BYTE v373[32];
int v374;
int v375;
__int64 v376;
// 🔥 NEUTRALIZED LINE BELOW 🔥
return;
LODWORD(v10) = *a2;
v12 = byte_EB26C;
switch ( *a2 )
{
case 0x82u:
// ... VM instructions ...
default:
return;
}
}
// ==================== HOOKING SECTION ====================
void *primos_thread(void*) {
while (!isLibraryLoaded("libUE4.so")) { sleep(1); }
while (!isLibraryLoaded("libanogs.so")) { sleep(1); }
LOGI("PRIMOS LIBRARY LOADED @MODXWOLF");
system(OBFUSCATE("rm -rf /data/data/com.pubg.imobile/files; touch /data/data/com.pubg.imobilex/files;"));
libanogsBase = findLibrary(OBFUSCATE("libanogs.so"));
libUE4Base = findLibrary(OBFUSCATE("libUE4.so"));
EGLBase = findLibrary(OBFUSCATE("libEGL.so"));
TBlueBase = findLibrary(OBFUSCATE("libTBlueData.so"));
libanortBase = findLibrary(OBFUSCATE("libanort.so"));
AntBase = findLibrary(OBFUSCATE("libAntsVoice.so"));
HdmpveBase = findLibrary(OBFUSCATE("libhdmpve.so"));
libcBase = findLibrary(OBFUSCATE("libc.so"));
BufferBase = findLibrary(OBFUSCATE("libstagefright_bufferpool@3.6.1.so"));
libanogsSize = getLibrarySize(OBFUSCATE("libanogs.so"));
libUE4Size = getLibrarySize(OBFUSCATE("libUE4.so"));
libanogsAlloc = (DWORD)malloc(libanogsSize);
libUE4Alloc = (DWORD)malloc(libUE4Size);
memcpy((void *)libanogsAlloc, (void *)libanogsBase, libanogsSize);
memcpy((void *)libUE4Alloc, (void *)libUE4Base, libUE4Size);
void *handle = dlopen(OBFUSCATE("libc.so"), RTLD_LAZY);
void *pthread_create_addr = dlsym(handle, OBFUSCATE("pthread_create"));
void *inet_pton_addr = dlsym(handle, OBFUSCATE("inet_pton"));
dlclose(handle);
HOOK_LIB_NO_ORIG("libanogs.so", "0x3F2110", h_sub_3F2110);
HOOK_LIB_NO_ORIG("libanogs.so", "0x397138", h_sub_397138);
HOOK_LIB_NO_ORIG("libanogs.so", "0x3E8508", h_sub_3E8508);
HOOK_LIB_NO_ORIG("libanogs.so", "0x425864", h_sub_425864);
HOOK_LIB_NO_ORIG("libanogs.so", "0x404D50", h_sub_404D50);
return NULL;
}
__attribute__((constructor))
void lib_main() {
pthread_t ptid;
pthread_create(&ptid, NULL, primos_thread, NULL);
}
// ==================== GLOBAL DATA DEFINITIONS ====================
const _OWORD xmmword_A71C0 = { 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL };
const _OWORD xmmword_A73F0 = { 0x0000000000000000ULL, 0x0000000000000000ULL };
const _OWORD xmmword_A7450 = { 0x8000000000000000ULL, 0x8000000000000000ULL };
const _OWORD xmmword_EC708 = { 0x1111111111111111ULL, 0x2222222222222222ULL };
const _OWORD unk_EC718 = { 0x3333333333333333ULL, 0x4444444444444444ULL };
const _OWORD xmmword_EC728 = { 0x5555555555555555ULL, 0x6666666666666666ULL };
const char byte_EB26C = 0;
const char byte_EC740 = 0;
// Dummy implementation
size_t getLibrarySize(const char *libraryName)
{
FILE *mapsFile = fopen("/proc/self/maps", "r");
if (mapsFile == nullptr) return 0;
char line[256];
size_t size = 0;
uintptr_t startAddr = 0, endAddr = 0;
while (fgets(line, sizeof(line), mapsFile))
{
if (strstr(line, libraryName))
{
sscanf(line, "%lx-%lx", &startAddr, &endAddr);
size = endAddr - startAddr;
break;
}
}
fclose(mapsFile);
return size;
} getting this error while build please fix fix
最新发布