/* This file has been generated by the Hex-Rays decompiler.
Copyright (c) 2007-2011 Hex-Rays <info@hex-rays.com>
Detected compiler: Visual C++
*/
#include <windows.h>
#include <math.h>
#include <defs.h>
#include <stdarg.h>
//-------------------------------------------------------------------------
// Data declarations
extern _UNKNOWN loc_1000B305; // weak
extern _UNKNOWN loc_10012017; // weak
extern int (__thiscall *off_1001A2AC)(void *, char); // weak
extern int (__thiscall *off_1001A2B4)(void *, char); // weak
extern int (__thiscall *off_1001A3A0)(void *, char); // weak
extern char aGetprocesswind[]; // idb
extern char aGetuserobjecti[]; // idb
extern char aGetlastactivep[19]; // weak
extern char aGetactivewindo[16]; // weak
extern char aMessageboxa[]; // idb
extern char LibFileName[]; // idb
extern char aAriel[6]; // weak
extern char aS[]; // idb
extern char aI[]; // idb
extern int dword_1002424C; // weak
extern int dword_10024250; // weak
extern int dword_10024254; // weak
extern char byte_10024258; // weak
extern char aIniuriaCssPriv[]; // idb
extern char byte_10024294[]; // weak
extern char byte_100242A0[]; // weak
extern char aDelay[10]; // weak
extern char aTime[9]; // weak
extern char aFov_0[8]; // weak
extern char aHitbox_0[11]; // weak
extern char aAwphitbox_0[14]; // weak
extern char aSmooth_0[11]; // weak
extern char aAvdraw_0[11]; // weak
extern char aSilentaim_0[14]; // weak
extern char aDistancebase_0[21]; // weak
extern char aSpraydown_0[14]; // weak
extern char aWeaponsettin_0[19]; // weak
extern char aPistol_0[14]; // weak
extern char aHitbox_1[15]; // weak
extern char aFov_1[12]; // weak
extern char aSmooth_1[15]; // weak
extern char aDelay_0[14]; // weak
extern char aTime_0[13]; // weak
extern char aSmg_0[11]; // weak
extern char aRifel_0[13]; // weak
extern char aSniper_0[14]; // weak
extern char aHitbox_2[14]; // weak
extern char aFov_2[11]; // weak
extern char aSmooth_2[14]; // weak
extern char aDelay_1[13]; // weak
extern char aTime_1[12]; // weak
extern char aTriggerbot_0[14]; // weak
extern char aTriggerbot_1[15]; // weak
extern char aOnlyinzoom_0[15]; // weak
extern char aUsekey_0[11]; // weak
extern char aTriggerkey[15]; // weak
extern char aUseTriggerhitb[22]; // weak
extern char aTriggerhitbo_0[21]; // weak
extern char aHead[13]; // weak
extern char aChest[14]; // weak
extern char aStomach[16]; // weak
extern char aLeftarm[16]; // weak
extern char aRightarm[17]; // weak
extern char aLeftleg[16]; // weak
extern char aRightleg[17]; // weak
extern char aEsp_0[7]; // weak
extern char aEnemyonly_0[14]; // weak
extern char aBox[8]; // weak
extern char aBoxsize_0[12]; // weak
extern char aName_0[9]; // weak
extern char aDistance_0[13]; // weak
extern char aWeapon_0[11]; // weak
extern char aHealth_0[11]; // weak
extern char aHealthbar_0[14]; // weak
extern char aVisible_0[12]; // weak
extern char aBoneesp_0[12]; // weak
extern char aRadar_0[9]; // weak
extern char aRadar_1[10]; // weak
extern char aRadarRange[16]; // weak
extern char aRadarSize[15]; // weak
extern char aRadarX[12]; // weak
extern char aRadarY[12]; // weak
extern char aMisc_0[8]; // weak
extern char aBunnyhop_0[13]; // weak
extern char aAutopistol_0[15]; // weak
extern char aCrosshair[14]; // weak
extern char aMenu_0[8]; // weak
extern char aMenuX[11]; // weak
extern char aMenuY[11]; // weak
extern char aSettings_0[12]; // weak
extern char aSettings_ini[17]; // weak
extern char aS_0[]; // idb
extern char aMenu_1[5]; // weak
extern char a_knife_t_mdl[]; // idb
extern char a_knife_ct_mdl[]; // idb
extern char a_pist_deagle_m[]; // idb
extern char a_pist_elite_md[]; // idb
extern char a_pist_fiveseve[]; // idb
extern char a_pist_glock18_[]; // idb
extern char a_pist_p228_mdl[]; // idb
extern char a_pist_usp_mdl[]; // idb
extern char a_rif_ak47_mdl[]; // idb
extern char a_rif_aug_mdl[]; // idb
extern char a_rif_m4a1_mdl[]; // idb
extern char a_rif_famas_mdl[]; // idb
extern char a_rif_galil_mdl[]; // idb
extern char a_rif_sg552_mdl[]; // idb
extern char a_mach_m249para[]; // idb
extern char a_smg_tmp_mdl[]; // idb
extern char a_smg_mac10_mdl[]; // idb
extern char a_smg_p90_mdl[]; // idb
extern char a_smg_ump45_mdl[]; // idb
extern char a_smg_mp5_mdl[]; // idb
extern char a_snip_g3sg1_md[]; // idb
extern char a_snip_scout_md[]; // idb
extern char a_snip_sg550_md[]; // idb
extern char a_snip_awp_mdl[]; // idb
extern char a_shot_xm1014_m[]; // idb
extern char a_shot_m3super9[]; // idb
extern char a_eq_flashbang_[]; // idb
extern char a_eq_fraggrenad[]; // idb
extern char a_eq_smokegrena[]; // idb
extern char a_c4_mdl[]; // idb
extern char aRadar_2[6]; // weak
extern char aD[]; // idb
extern char ModuleName[]; // idb
extern _WORD word_10024888[14]; // idb
extern char aX____xx____xxx[26]; // weak
extern char aEngine_dll[]; // idb
extern char aVengineclient0[17]; // weak
extern char aVmodelinfoclie[20]; // weak
extern char aEnginetracecli[21]; // weak
extern char aVgui_surface03[16]; // weak
extern char aMatsystemsurfa[20]; // weak
extern char aVcliententityl[21]; // weak
extern char aVgui_panel009[14]; // weak
extern char ClassName[]; // idb
extern char szClass[]; // idb
extern char AppName[]; // idb
extern char KeyName[]; // idb
extern char aAwphitbox[]; // idb
extern char aFov[]; // idb
extern char aSmooth[]; // idb
extern char aAimtime[]; // idb
extern char aAimdelay[]; // idb
extern char aAvdraw[]; // idb
extern char aSilentaim[]; // idb
extern char aDistancebasedf[]; // idb
extern char aSpraydown[]; // idb
extern char aWeaponsettings[]; // idb
extern char aPistol[]; // idb
extern char aSmg[]; // idb
extern char aRifel[]; // idb
extern char aSniper[]; // idb
extern char aTriggerbot[]; // idb
extern char aOnlyinzoom[]; // idb
extern char aUsekey[]; // idb
extern char aKey[]; // idb
extern char aUsehitbox[]; // idb
extern char aTriggerhead[]; // idb
extern char aTriggerhitbox[]; // idb
extern char aTriggerchest[]; // idb
extern char aTriggerstomach[]; // idb
extern char aTriggerleftarm[]; // idb
extern char aTriggerleftleg[]; // idb
extern char aTriggerrightar[]; // idb
extern char aTriggerrightle[]; // idb
extern char aEnemyonly[]; // idb
extern char aEsp[]; // idb
extern char aBoxesp[]; // idb
extern char aBoxsize[]; // idb
extern char aName[]; // idb
extern char aDistance[]; // idb
extern char aHealth[]; // idb
extern char aVisible[]; // idb
extern char aBoneesp[]; // idb
extern char aHealthbar[]; // idb
extern char aWeapon[]; // idb
extern char aRadar[]; // idb
extern char aRadar_range[]; // idb
extern char aRadar_size[]; // idb
extern char aRadar_x[]; // idb
extern char aRadar_y[]; // idb
extern char aBunnyhop[]; // idb
extern char aMisc[]; // idb
extern char aAutopistol[]; // idb
extern char aMenu_x[]; // idb
extern char aMenu[]; // idb
extern char aMenu_y[]; // idb
extern char aCfg1[]; // idb
extern char aSettings[]; // idb
extern char aCfg2[]; // idb
extern char aCfg3[]; // idb
extern char aCfg4[]; // idb
extern char aCfg5[]; // idb
extern int dword_10024BC0; // weak
extern int dword_10024BC4; // weak
extern __int16 word_10024BC8; // weak
extern char aIni[4]; // idb
extern char aTemp[]; // idb
extern char aAwp[4]; // weak
extern char aRif[4]; // weak
extern char aSnip[5]; // weak
extern char aEq[3]; // weak
extern char aKnife[6]; // weak
extern char aC4[3]; // weak
extern _UNKNOWN unk_10026950; // weak
extern _UNKNOWN unk_10026958; // weak
extern int (__cdecl *off_10028000)(_DWORD); // weak
extern int __security_cookie; // weak
extern void *off_10028308; // weak
extern _UNKNOWN unk_100286A0; // weak
extern _TBYTE tbyte_10028850; // weak
extern double dbl_10028882; // weak
extern int dword_10029414; // weak
extern int dword_10029418; // weak
extern int dword_1002941C; // weak
extern int dword_10029420; // weak
extern int dword_10029424; // weak
extern int dword_10029428; // weak
extern int dword_1002942C; // weak
extern int dword_10029430; // weak
extern int dword_10029434; // weak
extern int dword_10029438; // weak
extern int dword_1002943C; // weak
extern int dword_10029440; // weak
extern char aNone[5]; // weak
extern int dword_1002BA44; // weak
extern char byte_1002BA48; // weak
extern int dword_10033FE8; // weak
extern int dword_10034010; // weak
extern int dword_1003433C; // weak
extern _UNKNOWN unk_10034340; // weak
extern void *dword_10034344; // idb
extern int dword_10034348; // weak
extern int dword_1003435C; // weak
extern int dword_10034368; // weak
extern int dword_100349C4; // weak
extern int dword_100349D4; // weak
extern int dword_100349EC; // weak
extern int dword_10034A00; // weak
extern int dword_10034A04; // weak
extern int dword_10034A08; // weak
extern int dword_10034A0C; // weak
extern int dword_10034A10; // weak
extern float flt_10034AD8; // weak
extern int dword_10034ADC; // weak
extern int dword_10034AE4; // weak
extern int dword_10034AE8; // weak
extern float flt_10034AF0; // weak
extern float flt_10034AF4; // weak
extern float flt_10034AF8; // weak
extern float flt_10034AFC; // weak
extern float flt_10034B00; // weak
extern float flt_10034B04; // weak
extern float flt_10034B08; // weak
extern float flt_10034B0C; // weak
extern float flt_10034B10; // weak
extern float flt_10034B14; // weak
extern float flt_10034B18; // weak
extern float flt_10034B1C; // weak
extern float flt_10034B20; // weak
extern float flt_10034B24; // weak
extern float flt_10034B28; // weak
extern float flt_10034B2C; // weak
extern float flt_10034B30; // weak
extern float flt_10034B34; // weak
extern float flt_10034B38; // weak
extern float flt_10034B3C; // weak
extern float flt_10034B40; // weak
extern float flt_10034B44; // weak
extern float flt_10034B48; // weak
extern float flt_10034B4C; // weak
extern float flt_10034B50; // weak
extern float flt_10034B54; // weak
extern float flt_10034B58; // weak
extern float flt_10034B5C; // weak
extern float flt_10034B60; // weak
extern float flt_10034B64; // weak
extern float flt_10034B68; // weak
extern float flt_10034B6C; // weak
extern float flt_10034B70; // weak
extern float flt_10034B74; // weak
extern float flt_10034B78; // weak
extern float flt_10034B7C; // weak
extern float flt_10034B80; // weak
extern float flt_10034B84; // weak
extern float flt_10034B88; // weak
extern float flt_10034B8C; // weak
extern float flt_10034B90; // weak
extern float flt_10034B94; // weak
extern float flt_10034B98; // weak
extern float flt_10034BA0; // weak
extern float flt_10034BA4; // weak
extern float flt_10034BA8; // weak
extern float flt_10034BAC; // weak
extern float flt_10034BB0; // weak
extern float flt_10034BB4; // weak
extern float flt_10034BB8; // weak
extern float flt_10034BBC; // weak
extern float flt_10034BC0; // weak
extern float flt_10034BC4; // weak
extern float flt_10034BC8; // weak
extern float flt_10034BCC; // weak
extern float flt_10034BD0; // weak
extern float flt_10034BD4; // weak
extern float flt_10034BD8; // weak
extern float flt_10034BDC; // weak
extern float flt_10034BE0; // weak
extern float flt_10034BE4; // weak
extern float flt_10034BE8; // weak
extern float flt_10034BEC; // weak
extern float flt_10034BF0; // weak
extern float flt_10034BF4; // weak
extern CHAR byte_10034BF8; // idb
extern char ReturnedString[255]; // idb
extern char byte_10034DF6[255]; // idb
extern char byte_10034EF5[255]; // idb
extern char byte_10034FF4[255]; // idb
extern char byte_100350F3[513]; // idb
extern float flt_100352F4; // weak
extern float flt_100352F8; // weak
extern float flt_100352FC; // weak
extern float flt_10035300; // weak
extern float flt_10035304; // weak
extern float flt_10035308; // weak
extern int dword_10035314; // weak
extern char byte_10035318; // weak
extern char byte_10035319; // weak
extern char byte_1003531A; // weak
extern float flt_10035324; // weak
extern float flt_10035328; // weak
extern int dword_1003532C; // weak
extern char byte_10035330[256]; // idb
extern char byte_10035430[256]; // idb
extern char byte_10035530[256]; // idb
extern float flt_10035630; // weak
extern float flt_10035634; // weak
extern float flt_10035638; // weak
extern float flt_1003563C; // weak
extern float flt_10035640; // weak
extern float flt_10035644; // weak
extern char byte_10035648[256]; // idb
extern char byte_10035748[]; // weak
extern int dword_10035B30[]; // weak
extern float flt_10035B34[]; // weak
extern float flt_10035B38[]; // weak
extern float flt_10035B3C[]; // weak
extern char byte_10035B40[]; // weak
extern int dword_10035F28; // weak
extern float flt_10035F2C; // weak
extern float flt_10035F30; // weak
extern float flt_10035F34; // weak
extern char byte_1012D808[256]; // idb
extern int dword_1012D908; // weak
extern float flt_1012D90C; // weak
extern float flt_1012D910; // weak
extern float flt_1012D914; // weak
extern float flt_1012D918; // weak
extern int dword_1012DB20; // weak
extern int dword_1012DB24; // weak
extern int dword_1012DB28; // weak
extern int dword_1012DB2C; // weak
extern const CHAR FileName; // idb
extern char Buffer[]; // idb
extern int dword_1012DE30; // weak
extern int dword_1012DE34; // weak
extern int dword_1012DE38; // weak
extern int dword_1012DE3C; // weak
extern int (__cdecl *dword_1012DE40)(_DWORD); // weak
extern int (__cdecl *dword_1012DE44)(_DWORD, _DWORD); // weak
extern char byte_1012DE48; // weak
extern char byte_1012DE4A; // weak
extern int dword_1012DE54; // weak
extern int dword_1012DE58; // weak
extern int dword_1012DE5C; // weak
extern int dword_1012DE60; // weak
extern int dword_1012DE64; // weak
extern int dword_1012DE68; // weak
extern int dword_1012DE6C; // weak
extern int dword_1012DE70; // weak
extern int dword_1012DE74; // weak
extern int dword_1012DE78; // weak
extern _UNKNOWN lpPrevWndFunc; // weak
extern int dword_1012DEDC; // weak
extern int dword_1012DEE8; // weak
extern UINT uNumber; // idb
extern int dword_1012DF20[]; // weak
//-------------------------------------------------------------------------
// Function declarations
#define __thiscall __cdecl // Test compile in C mode
double __cdecl sub_10001000(float a1);
void __cdecl sub_10001020();
// void __usercall sub_10001040(int a1<eax>, int a2<ecx>, int a3<esi>);
// void __usercall sub_100010C0(int a1<esi>, float a2, float a3);
double __stdcall sub_10001150(float a1, float a2, int a3, char a4, int a5, int a6, float a7, float a8, float a9);
// char __userpurge sub_10001230<al>(int a1<edx>, int a2<ebx>, signed int a3);
// __int16 __usercall sub_100013C0<ax>(int a1<ecx>, double a2<st0>);
int __cdecl sub_10001A10();
unsigned int sub_10001A50(int a1, int a2, int a3, int a4, int a5, int a6, char a7, char a8, const char *a9, ...);
// int __userpurge sub_10001B70<eax>(int a1<edx>, int a2<edi>, int a3<esi>, int a4, int a5, int a6, int a7, int a8);
// int __userpurge sub_10001BB0<eax>(int a1<esi>, int a2, int a3, int a4, int a5, int a6, int a7);
// int __userpurge sub_10001CD0<eax>(int a1<edx>, int a2<edi>, int a3<esi>, int a4, int a5);
// int __userpurge sub_10001D10<eax>(int a1<edi>, int a2, int a3, int a4);
// unsigned int __userpurge sub_10001E00<eax>(int a1<eax>, int a2<ebx>, int a3, int a4, const char *a5);
int __thiscall sub_10001F20(int this);
int __cdecl sub_10002000();
void __stdcall sub_10002220(int a1, int a2, int a3);
char __cdecl sub_10003390();
int __stdcall sub_100033D0(int, int, int); // weak
int __thiscall sub_100037C0(int this, int a2, int a3, int a4);
// int __usercall sub_10004030<eax>(int a1<edi>, int a2<esi>);
// int __userpurge sub_10004070<eax>(char *a1<eax>, int a2<edi>, int a3, float a4, float a5, float a6);
void __cdecl sub_100040C0();
__int16 __cdecl sub_10005460();
void __cdecl sub_10005660();
int __cdecl sub_10005750(float, int, int); // idb
// int __usercall sub_10005770<eax>(int a1<eax>, int a2<edx>, int a3<ecx>);
// int __usercall sub_100057F0<eax>(const char *a1<esi>);
double __cdecl sub_10005B90();
// int __usercall sub_100064B0<eax>(unsigned __int8 a1<al>, int a2<esi>, int a3);
// void __usercall sub_10006620(int a1<edi>);
int __cdecl sub_100068B0();
// signed int __userpurge sub_10006960<eax>(int a1<eax>, float a2, float a3, int a4, float a5, float a6, int a7, float a8, float a9, int a10);
// BOOL __usercall sub_10006BA0<eax>(DWORD a1<ecx>, int a2<edi>);
char __thiscall sub_10006C00(void *this);
int __cdecl sub_10006CA0(int a1, int a2, int a3);
int __stdcall sub_10006D10(int, int, int, int); // weak
int __stdcall StartAddress(int a1);
// BOOL __usercall sub_10007070<eax>(const CHAR *a1<edi>, const CHAR *a2<esi>, float a3);
BOOL __cdecl sub_100070E0();
DWORD __cdecl sub_100075D0();
BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
// int __usercall sub_10008220<eax>(int a1<esi>);
// bool __usercall sub_10008240<ax>(int a1<eax>);
int __stdcall sub_100082B0(int a1);
int __stdcall sub_100082E0(int a1);
bool __cdecl sub_10008310();
bool __cdecl sub_100083B0();
bool __cdecl sub_10008450();
bool __cdecl sub_100084F0();
bool __cdecl sub_10008590();
bool __cdecl sub_10008620();
bool __cdecl sub_100086C0();
bool __cdecl sub_10008760();
// bool __userpurge sub_10008800<al>(int a1<edx>, int a2<esi>, int a3);
// int __usercall sub_100088E0<eax>(int a1<edi>, int a2<esi>);
// char __usercall sub_10008930<al>(int a1<ecx>, int a2<edi>, int a3<esi>);
// char __usercall sub_100089F0<al>(int a1<eax>, int a2<ecx>, int a3<esi>);
// double __usercall sub_10008A70<st0>(int a1<ecx>, int a2<esi>);
double __cdecl sub_10008AE0(float a1);
double __cdecl sub_10008B00(float a1);
double __fastcall sub_10008B20(int a1);
void __fastcall sub_10008B90(int a1);
double __cdecl sub_10008BF0(int a1);
void __cdecl sub_10008C40(int a1, int a2);
int __cdecl sub_10008D70(int a1, int a2, int a3);
int __cdecl sub_10008DF0(int a1, int a2, int a3);
int __cdecl sub_10008E10(int a1, int a2, int a3, int a4);
// int __cdecl vsprintf(char *, const char *, va_list);
// int sprintf(char *, const char *, ...);
// char *__cdecl strstr(const char *, const char *);
int __thiscall sub_10009116(void *this);
void *__thiscall sub_10009124(void *this, char a2);
void __thiscall sub_10009159(int this);
void *__thiscall sub_10009164(void *this, char a2);
void *__thiscall sub_10009186(void *this, int a2);
// int __cdecl operator new(size_t); idb
// double __usercall sub_1000991A<st0>(double<st0>); weak
// double __usercall sub_10009A74<st0>(double a1<st1>, long double a2<st0>);
// __int32 __usercall _ftol2_sse<eax>(double<st0>); weak
// void *__cdecl memset(void *, int, size_t);
// _DWORD __stdcall _LocaleUpdate::_LocaleUpdate(_DWORD); weak
int __cdecl sub_1000B01B(int a1);
// int __cdecl _invoke_watson(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
// int __cdecl _invalid_parameter(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
// int *__cdecl _errno();
// unsigned __int32 *__cdecl __doserrno();
int __cdecl sub_1000B29E(int a1);
void __cdecl j__free(void *);
// _DWORD __stdcall std::exception::exception(_DWORD); weak
void __thiscall sub_1000B418(int this);
void *__thiscall sub_1000B43B(void *this, char a2);
int __cdecl sub_1000B693(int a1);
void **__cdecl sub_1000B709();
// void __cdecl free(void *);
// _DWORD __cdecl flsall(_DWORD); weak
int __cdecl sub_1000C21D();
signed int __cdecl sub_1000C2CF(int a1);
signed int __cdecl sub_1000C306(int a1);
// _DWORD __cdecl _encode_pointer(_DWORD); weak
// int _encoded_null(void); weak
// _DWORD __cdecl _decode_pointer(_DWORD); weak
int (*__cdecl sub_1000CFDE())(void);
int (*__cdecl sub_1000D002())(void);
// int unknown_libname_14(); weak
// int __fastcall unknown_libname_73(_DWORD, _DWORD); weak
// int unknown_libname_110(void); weak
double __fastcall sub_100103B1(char a1);
// double __usercall sub_10010401<st0>(double result<st0>);
void __cdecl sub_100117DB();
// int __cdecl _write_nolock(int, int, DWORD nNumberOfBytesToWrite); idb
int __cdecl sub_10011F45(int, int, DWORD nNumberOfBytesToWrite); // idb
// _DWORD __cdecl _unlock(_DWORD); weak
// _DWORD __cdecl _lock(_DWORD); weak
int __cdecl sub_10014080(int a1);
// _DWORD __cdecl __lock_fhandle(_DWORD); weak
// _DWORD __cdecl _unlock_fhandle(_DWORD); weak
int __cdecl sub_100146A3();
int __cdecl sub_1001486A(int a1);
// _DWORD __cdecl unknown_libname_124(_DWORD, _DWORD, _DWORD); weak
signed int __cdecl sub_10015173(int a1, int a2, int a3);
signed int __cdecl sub_10015219(int a1, int a2, int a3);
// int unknown_libname_207(void); weak
int __cdecl sub_10015A52();
int __cdecl sub_10015D34();
int __cdecl sub_10017215(int a1, int a2, int a3);
signed int __cdecl sub_10017663(int a1, int a2);
signed int __cdecl sub_10017BA5(int a1, int a2);
// _DWORD __cdecl __strgtold12_l(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
void __cdecl sub_10019D40();
void __cdecl sub_10019D4D(); // idb
// DWORD __stdcall GetTickCount();
// void __stdcall ExitProcess(UINT uExitCode);
// HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName);
// BOOL __stdcall VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect);
// UINT __stdcall GetPrivateProfileIntA(LPCSTR lpAppName, LPCSTR lpKeyName, INT nDefault, LPCSTR lpFileName);
// void __stdcall Sleep(DWORD dwMilliseconds);
// BOOL __stdcall DisableThreadLibraryCalls(HMODULE hLibModule);
// DWORD __stdcall GetPrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName);
// BOOL __stdcall WritePrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName);
// DWORD __stdcall GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer);
// HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
// FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName);
// HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName);
// LONG __stdcall SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong);
// HWND __stdcall FindWindowA(LPCSTR lpClassName, LPCSTR lpWindowName);
// HWND __stdcall FindWindowExA(HWND hWndParent, HWND hWndChildAfter, LPCSTR lpszClass, LPCSTR lpszWindow);
// SHORT __stdcall GetAsyncKeyState(int vKey);
//----- (10001000) --------------------------------------------------------
double __cdecl sub_10001000(float a1)
{
return (float)cos(a1);
}
//----- (10001020) --------------------------------------------------------
void __cdecl sub_10001020()
{
byte_1002BA48 = 0;
flt_10034AD8 = 999999.0;
dword_1002BA44 = -1;
}
// 1002BA44: using guessed type int dword_1002BA44;
// 1002BA48: using guessed type char byte_1002BA48;
// 10034AD8: using guessed type float flt_10034AD8;
//----- (10001040) --------------------------------------------------------
void __usercall sub_10001040(int a1<eax>, int a2<ecx>, int a3<esi>)
{
double v3; // ST00_8@1
double v4; // ST08_8@1
v3 = *(float *)a2 - *(float *)a1;
v4 = *(float *)(a2 + 4) - *(float *)(a1 + 4);
*(float *)a3 = atan((*(float *)(a2 + 8) - *(float *)(a1 + 8)) / sqrt(v3 * v3 + v4 * v4)) * 57.29578018188477;
*(float *)(a3 + 4) = atan(v4 / v3) * 57.29578018188477;
*(float *)(a3 + 8) = 0.0;
if ( v3 >= 0.0 )
*(float *)(a3 + 4) = *(float *)(a3 + 4) + 180.0;
}
//----- (100010C0) --------------------------------------------------------
void __usercall sub_100010C0(int a1<esi>, float a2, float a3)
{
float v3; // ST08_4@1
float v4; // ST00_4@1
float v5; // ST04_4@1
float v6; // ST0C_4@1
float v7; // ST0C_4@1
float v8; // ST0C_4@1
v3 = a2 * 3.141592653589793 / 180.0;
v4 = 3.141592653589793 * a3 / 180.0;
v5 = cos(v3);
v6 = cos(v4);
*(float *)a1 = -v6 * -v5;
v7 = sin(v4);
*(float *)(a1 + 4) = v7 * v5;
v8 = sin(v3);
*(float *)(a1 + 8) = -v8;
}
//----- (10001150) --------------------------------------------------------
double __stdcall sub_10001150(float a1, float a2, int a3, char a4, int a5, int a6, float a7, float a8, float a9)
{
double v9; // st7@1
float v11; // [sp+4h] [bp-Ch]@1
float v12; // [sp+8h] [bp-8h]@1
float v13; // [sp+Ch] [bp-4h]@1
float v14; // [sp+14h] [bp+4h]@1
float v15; // [sp+14h] [bp+4h]@1
float v16; // [sp+14h] [bp+4h]@1
float v17; // [sp+14h] [bp+4h]@1
float v18; // [sp+14h] [bp+4h]@1
sub_10001040((int)&a7, (int)&a4, (int)&v11);
sub_100010C0((int)&a7, a1, a2);
sub_100010C0((int)&v11, v11, v12);
v14 = a8 * a8 + a7 * a7 + a9 * a9;
v15 = sqrt(v14);
v9 = v15;
v16 = v12 * a8 + v11 * a7 + v13 * a9;
v17 = v16 / (v9 * v9);
v18 = acos(v17);
return (float)(v18 * 57.29577951308232);
}
//----- (10001230) --------------------------------------------------------
char __userpurge sub_10001230<al>(int a1<edx>, int a2<ebx>, signed int a3)
{
char result; // al@2
int v4; // eax@3
int v5; // esi@3
int (__thiscall *v6)(_DWORD); // eax@6
int v7; // esi@6
int v8; // eax@6
int v9; // edi@7
int v10; // ebp@8
float v11; // ST10_4@8
int v12; // eax@9
int v13; // esi@11
float v14; // [sp+18h] [bp-1828h]@11
float v15; // [sp+1Ch] [bp-1824h]@11
float v16; // [sp+20h] [bp-1820h]@11
float v17; // [sp+24h] [bp-181Ch]@11
float v18; // [sp+28h] [bp-1818h]@11
float v19; // [sp+2Ch] [bp-1814h]@11
float v20; // [sp+30h] [bp-1810h]@11
float v21; // [sp+34h] [bp-180Ch]@11
float v22; // [sp+38h] [bp-1808h]@11
DWORD v23; // [sp+3Ch] [bp-1804h]@8
char v24[6144]; // [sp+40h] [bp-1800h]@8
if ( a3 < 20 )
{
v4 = (*(int (__stdcall **)(int))(*(_DWORD *)dword_1012DE60 + 12))(a1);
v5 = v4;
if ( v4 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 8) + 32))(v4 + 8) )
{
v6 = *(int (__thiscall **)(_DWORD))(*(_DWORD *)(v5 + 4) + 32);
v7 = v5 + 4;
v8 = v6(v7);
if ( v8 )
{
v9 = (*(int (__stdcall **)(int))(*(_DWORD *)dword_1012DE70 + 108))(v8);
if ( v9
&& (v10 = *(_DWORD *)v7 + 60,
v23 = GetTickCount(),
v11 = (double)v23,
(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, signed int, signed int, _DWORD))v10)(
v7,
v24,
128,
256,
LODWORD(v11)))
&& (v12 = v9 + *(_DWORD *)(v9 + 176)) != 0 )
{
v13 = v12 + *(_DWORD *)(v12 + 8) + 68 * a3;
sub_10008D70(v13 + 8, (int)&v24[48 * *(_DWORD *)v13], (int)&v20);
sub_10008D70(v13 + 20, (int)&v24[48 * *(_DWORD *)v13], (int)&v14);
result = 1;
v17 = v14 + v20;
v18 = v15 + v21;
v19 = v16 + v22;
v14 = v17 * 0.5;
v15 = v18 * 0.5;
v16 = 0.5 * v19;
*(float *)a2 = v14;
*(float *)(a2 + 4) = v15;
*(float *)(a2 + 8) = v16;
}
else
{
result = 0;
}
}
else
{
result = 1;
}
}
else
{
result = 0;
}
}
else
{
result = 0;
}
return result;
}
// 1012DE60: using guessed type int dword_1012DE60;
// 1012DE70: using guessed type int dword_1012DE70;
// 10001230: using guessed type char var_1800[6144];
//----- (100013C0) --------------------------------------------------------
__int16 __usercall sub_100013C0<ax>(int a1<ecx>, double a2<st0>)
{
int (*v3)(void); // edx@1
int v4; // eax@1
int v5; // eax@1
int v6; // esi@1
int v8; // ebx@7
int v9; // eax@7
float v10; // ecx@7
float v11; // edx@7
int v12; // eax@7
void (__thiscall *v13)(_DWORD, _DWORD); // edx@7
int (__stdcall *v14)(_DWORD); // edx@7
int v15; // esi@7
int v16; // eax@11
int v17; // edi@11
int v18; // eax@13
int v19; // edi@13
int v20; // ebx@16
signed int v21; // eax@17
float v22; // edi@19
float v23; // ebx@19
float v24; // ebp@19
int v26; // esi@20
int v27; // edx@20
int (*v28)(void); // eax@20
int v29; // eax@20
int v30; // eax@20
int v32; // esi@25
int (__stdcall *v34)(_DWORD); // edx@30
void (__stdcall *v36)(_DWORD); // eax@34
float v46; // [sp+20h] [bp-F0h]@1
float v47; // [sp+24h] [bp-ECh]@7
int v48; // [sp+28h] [bp-E8h]@7
double v49; // [sp+2Ch] [bp-E4h]@13
float v50; // [sp+34h] [bp-DCh]@34
float v51; // [sp+38h] [bp-D8h]@18
float v52; // [sp+3Ch] [bp-D4h]@19
float v53; // [sp+40h] [bp-D0h]@19
int v54; // [sp+44h] [bp-CCh]@7
int v55; // [sp+48h] [bp-C8h]@2
int v57; // [sp+50h] [bp-C0h]@1
int v58; // [sp+54h] [bp-BCh]@7
int v59; // [sp+58h] [bp-B8h]@24
int v60; // [sp+5Ch] [bp-B4h]@24
float v62; // [sp+64h] [bp-ACh]@28
double v65; // [sp+70h] [bp-A0h]@33
float v66; // [sp+78h] [bp-98h]@34
float v67; // [sp+7Ch] [bp-94h]@20
float v68; // [sp+80h] [bp-90h]@20
float v69; // [sp+84h] [bp-8Ch]@20
char v70; // [sp+88h] [bp-88h]@15
unsigned int v71; // [sp+10Ch] [bp-4h]@1
v71 = (unsigned int)&v46 ^ __security_cookie;
_EDI = a1;
v3 = *(int (**)(void))(*(_DWORD *)dword_1012DE5C + 48);
v57 = a1;
v4 = v3();
v5 = (*(int (__stdcall **)(int))(*(_DWORD *)dword_1012DE60 + 12))(v4);
v6 = v5;
if ( v5 )
{
if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 8) + 32))(v5 + 8) )
*(float *)&v55 = 0.0;
else
v55 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 28))(v6);
}
else
{
*(float *)&v55 = 0.0;
}
LOWORD(_EAX) = (*(int (**)(void))(*(_DWORD *)dword_1012DE5C + 104))();
if ( (_BYTE)_EAX )
{
v8 = v55;
__asm { fld ds:flt_10024BFC }
byte_1002BA48 = 0;
__asm { fstp flt_10034AD8 }
dword_1002BA44 = -1;
v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v55 + 40))(v55);
LODWORD(v10) = *(_DWORD *)v9;
LODWORD(v11) = *(_DWORD *)(v9 + 4);
v12 = *(_DWORD *)(v9 + 8);
v47 = v11;
v13 = *(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 492);
v48 = v12;
v46 = v10;
v13(v8, &v58);
v14 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1012DE60 + 20);
v15 = 1;
v54 = 1;
_EAX = v14(0);
if ( _EAX >= 1 )
{
while ( 1 )
{
if ( v15 != (*(int (**)(void))(*(_DWORD *)dword_1012DE5C + 48))() )
{
v16 = (*(int (__stdcall **)(int))(*(_DWORD *)dword_1012DE60 + 12))(v15);
v17 = v16;
if ( v16 )
{
if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v16 + 8) + 32))(v16 + 8) )
{
v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 28))(v17);
v19 = v18;
LODWORD(v49) = v18;
if ( v18 )
{
if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v18 + 8) + 32))(v18 + 8) )
{
if ( (unsigned __int8)(*(int (__stdcall **)(int, char *))(*(_DWORD *)dword_1012DE5C + 32))(v15, &v70) )
{
v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 264))(v8);
if ( (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 264))(v19) != v20 )
{
__asm { fld flt_10034B24 }
v21 = _ftol2_sse(a2);
if ( v21 >= 0 )
{
if ( sub_10001230(v15, (int)&v51, v21) )
{
__asm { fld flt_10034B28 }
v22 = v53;
v23 = v52;
__asm
{
fst [esp+100h+var_C4]
fldz
}
v24 = v51;
__asm
{
fcomp flt_10034B40
fnstsw ax
}
if ( __SETP__(HIBYTE(_AX) & 0x44, 0) )
{
__asm { fmul ds:dbl_10024E58 }
v26 = *(_DWORD *)dword_1012DE60;
v27 = *(_DWORD *)dword_1012DE5C;
__asm { fstp [esp+100h+var_C4] }
v28 = *(int (**)(void))(v27 + 48);
v67 = v51;
v68 = v52;
v69 = v53;
v29 = v28();
v30 = (*(int (__thiscall **)(int, int))(v26 + 12))(dword_1012DE60, v29);
if ( v30 )
{
sub_10008A70(v30, (int)&v67);
__asm
{
fstp [esp+100h+var_B0]
fld [esp+100h+var_C4]
}
v15 = v54;
__asm
{
fdiv [esp+100h+var_B0]
fstp [esp+100h+var_C4]
}
}
else
{
__asm { fld ds:flt_10024BFC }
v15 = v54;
__asm
{
fstp [esp+100h+var_B0]
fld [esp+100h+var_C4]
fdiv [esp+100h+var_B0]
fstp [esp+100h+var_C4]
}
}
}
else
{
__asm { fstp st }
}
a2 = sub_10001150(v46, v47, v48, v58, v59, v60, v24, v23, v22);
__asm
{
fld [esp+100h+var_C4]
fcompp
fnstsw ax
}
if ( __SETP__(HIBYTE(_AX) & 5, 0) )
{
v32 = LODWORD(v49);
if ( sub_10008800((int)&v58, SLODWORD(v49), (int)&v51) )
{
if ( !*(_DWORD *)(v32 + 135) )
{
__asm
{
fld flt_10034AD8
fstp [esp+100h+var_E4]
}
a2 = sub_10001150(v46, v47, v48, v58, v59, v60, v24, v23, v22);
__asm
{
fcomp [esp+100h+var_E4]
fnstsw ax
}
if ( HIBYTE(_AX) & 0x41 )
{
a2 = sub_10001150(v46, v47, v48, v58, v59, v60, v24, v23, v22);
__asm { fstp flt_10034AD8 }
sub_10001020();
__asm
{
fld [esp+100h+var_D8]
fstp [esp+100h+var_AC]
fld [esp+100h+var_D4]
}
dword_1002BA44 = v54;
__asm
{
fstp [esp+100h+var_A8]
fld [esp+100h+var_D0]
fstp [esp+100h+var_A4]
}
}
}
}
v15 = v54;
}
}
}
}
}
}
}
}
}
}
v34 = *(int (__stdcall **)(_DWORD))(*(_DWORD *)dword_1012DE60 + 20);
++v15;
v54 = v15;
_EAX = v34(0);
if ( v15 > _EAX )
break;
v8 = v55;
}
_EDI = v57;
}
if ( dword_1002BA44 != -1 )
{
sub_10001040((int)&v62, (int)&v58, (int)&v65);
__asm
{
fldz
fcom flt_10034B2C
fnstsw ax
}
if ( __SETP__(HIBYTE(_AX) & 0x44, 0) )
{
__asm { fstp st }
v49 = v65;
v36 = *(void (__stdcall **)(_DWORD))(*(_DWORD *)dword_1012DE5C + 76);
v50 = v66;
v36(&v62);
__asm
{
fld dword ptr [esp+100h+var_E4]
fld [esp+100h+var_AC]
fld st
fsubp st(2), st
fxch st(1)
fstp [esp+100h+var_D8]
fld dword ptr [esp+100h+var_E4+4]
fld [esp+100h+var_A8]
fld st
fsubp st(2), st
fxch st(1)
fstp [esp+100h+var_D4]
fld [esp+100h+var_DC]
fld [esp+100h+var_A4]
fld st
fsubp st(2), st
fxch st(1)
fstp [esp+100h+var_D0]
fld [esp+100h+var_D8]
fst [esp+100h+var_F0]
fld [esp+100h+var_D4]
fst [esp+100h+var_EC]
fld ds:flt_10024E50
fcom st(2)
fnstsw ax
fld ds:dbl_10024E48
}
if ( __SETP__(HIBYTE(_AX) & 5, 0) )
{
__asm { fstp st(3) }
}
else
{
__asm
{
fsub st(3), st
fxch st(3)
fstp [esp+100h+var_F0]
}
}
__asm
{
fcom st(1)
fnstsw ax
}
if ( __SETP__(HIBYTE(_AX) & 5, 0) )
{
__asm { fstp st(1) }
}
else
{
__asm
{
fxch st(1)
fsub st, st(2)
fstp [esp+100h+var_EC]
}
}
__asm
{
fld ds:flt_10024E44
fld [esp+100h+var_F0]
fcom st(1)
fnstsw ax
}
if ( !__SETP__(HIBYTE(_AX) & 5, 0) )
{
__asm
{
fadd st, st(3)
fstp [esp+100h+var_F0]
fld [esp+100h+var_F0]
}
}
__asm
{
fld [esp+100h+var_EC]
fcom st(2)
fnstsw ax
fstp st(2)
}
if ( __SETP__(HIBYTE(_AX) & 5, 0) )
{
__asm { fstp st(3) }
}
else
{
__asm
{
fxch st(1)
faddp st(3), st
fxch st(2)
fstp [esp+100h+var_EC]
fld [esp+100h+var_EC]
}
}
__asm
{
fld flt_10034B2C
fadd st, st
fstp [esp+100h+var_C0]
fld [esp+100h+var_C0]
fld st
fdivp st(4), st
fxch st(3)
fstp [esp+100h+var_F0]
fdiv st, st(2)
fstp [esp+100h+var_EC]
fld [esp+100h+var_D0]
fdivrp st(2), st
fxch st(1)
fstp [esp+100h+var_E8]
fld [esp+100h+var_F0]
faddp st(4), st
fxch st(3)
fstp [esp+100h+var_D8]
fld [esp+100h+var_EC]
faddp st(2), st
fxch st(1)
fstp [esp+100h+var_D4]
fadd [esp+100h+var_E8]
fstp [esp+100h+var_D0]
fld [esp+100h+var_D8]
fst dword ptr [esp+100h+var_E4]
fld [esp+100h+var_D4]
fst dword ptr [esp+100h+var_E4+4]
fld [esp+100h+var_D0]
fst [esp+100h+var_DC]
fxch st(2)
fcom st(3)
fnstsw ax
}
if ( HIBYTE(_AX) & 0x41 )
{
__asm
{
fstp st
fld ds:dbl_10024E48
}
}
else
{
__asm
{
fld ds:dbl_10024E48
fsub st(1), st
fxch st(1)
fstp dword ptr [esp+100h+var_E4]
}
}
__asm
{
fxch st(3)
fcomp st(1)
fnstsw ax
}
if ( __SETP__(HIBYTE(_AX) & 5, 0) )
{
__asm { fstp st }
}
else
{
__asm
{
fsub st, st(2)
fstp dword ptr [esp+100h+var_E4+4]
}
}
__asm
{
fld ds:flt_10024E44
fld dword ptr [esp+100h+var_E4]
fcom st(1)
fnstsw ax
}
if ( !__SETP__(HIBYTE(_AX) & 5, 0) )
{
__asm
{
fadd st, st(3)
fstp dword ptr [esp+100h+var_E4]
fld dword ptr [esp+100h+var_E4]
}
}
__asm
{
fld dword ptr [esp+100h+var_E4+4]
fcom st(2)
fnstsw ax
fstp st(2)
}
if ( __SETP__(HIBYTE(_AX) & 5, 0) )
{
__asm { fstp st(3) }
}
else
{
__asm
{
fxch st(1)
faddp st(3), st
fxch st(2)
fstp dword ptr [esp+100h+var_E4+4]
fld dword ptr [esp+100h+var_E4+4]
}
}
__asm
{
fxch st(2)
fstp dword ptr [edi+0Ch]
fxch st(1)
fstp dword ptr [edi+10h]
fstp dword ptr [edi+14h]
fldz
fcomp flt_10034B3C
fnstsw ax
}
if ( !__SETP__(BYTE1(_EAX) & 0x44, 0) )
LOWORD(_EAX) = (*(int (__stdcall **)(double *))(*(_DWORD *)dword_1012DE5C + 80))(&v49);
}
else
{
__asm
{
fld dword ptr [esp+100h+var_A0]
fstp dword ptr [edi+0Ch]
fld dword ptr [esp+100h+var_A0+4]
fstp dword ptr [edi+10h]
fld [esp+100h+var_98]
fstp dword ptr [edi+14h]
fcomp flt_10034B3C
fnstsw ax
}
if ( !__SETP__(BYTE1(_EAX) & 0x44, 0) )
LOWORD(_EAX) = (*(int (__stdcall **)(double *))(*(_DWORD *)dword_1012DE5C + 80))(&v65);
}
}
}
return _EAX;
}
// 10001444: inconsistent fpu stack
// 1000A070: using guessed type __int32 __usercall _ftol2_sse<eax>(double<st0>);
// 10028160: using guessed type int __security_cookie;
// 1002BA44: using guessed type int dword_1002BA44;
// 1002BA48: using guessed type char byte_1002BA48;
// 1012DE5C: using guessed type int dword_1012DE5C;
// 1012DE60: using guessed type int dword_1012DE60;
//----- (10001A10) --------------------------------------------------------
int __cdecl sub_10001A10()
{
dword_10034ADC = (*(int (**)(void))(*(_DWORD *)dword_1012DE68 + 256))();
return (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 260))(
dword_10034ADC,
"Ariel",
12,
450,
0,
0,
512);
}
// 10034ADC: using guessed type int dword_10034ADC;
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10001A50) --------------------------------------------------------
unsigned int sub_10001A50(int a1, int a2, int a3, int a4, int a5, int a6, char a7, char a8, const char *a9, ...)
{
int v9; // esi@0
unsigned int result; // eax@1
int v11; // ebp@1
char v12; // [sp+8h] [bp-404h]@1
char v13; // [sp+9h] [bp-403h]@2
unsigned int v14; // [sp+408h] [bp-4h]@1
va_list va; // [sp+434h] [bp+28h]@1
va_start(va, a9);
result = (unsigned int)&v12 ^ __security_cookie;
v14 = (unsigned int)&v12 ^ __security_cookie;
v11 = a1;
if ( a9 )
{
v12 = 0;
memset(&v13, 0, 0x3FFu);
vsprintf(&v12, a9, va);
if ( a7 == 1 )
v11 = (*(int (__cdecl **)(int, _DWORD, char *))(*(_DWORD *)dword_1012DE68 + 540))(
dword_1012DE68,
*(_DWORD *)v9,
&v12)
/ -2
+ a1;
if ( a8 == 1 )
v11 += -2
- (*(int (__cdecl **)(int, _DWORD, char *))(*(_DWORD *)dword_1012DE68 + 540))(
dword_1012DE68,
*(_DWORD *)v9,
&v12);
result = (*(int (**)(int, _DWORD, int, int, int, int, int, int, const char *, ...))(*(_DWORD *)dword_1012DE68 + 528))(
dword_1012DE68,
*(_DWORD *)v9,
v11,
a2,
a3,
a4,
a5,
a6,
"%s",
&v12);
}
return result;
}
// 10001A50: can not handle register arguments in vararg function, discarded them
// 10028160: using guessed type int __security_cookie;
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10001B70) --------------------------------------------------------
int __userpurge sub_10001B70<eax>(int a1<edx>, int a2<edi>, int a3<esi>, int a4, int a5, int a6, int a7, int a8)
{
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 44))(a6, a7, a8, a1);
return (*(int (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(a2, a3, a2 + a4, a3 + a5);
}
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10001BB0) --------------------------------------------------------
int __userpurge sub_10001BB0<eax>(int a1<esi>, int a2, int a3, int a4, int a5, int a6, int a7)
{
int v7; // ebx@1
int v8; // edi@1
v7 = a2 - a1;
v8 = a3 - a1;
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 44))(a4, a5, a6, a7);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(
a2 - a1 + 1,
v8,
a2 - a1 + 1 + 2 * a1 - 1,
v8 + 1);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 44))(a4, a5, a6, a7);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(v7, a1 + a3, v7 + 2 * a1, a1 + a3 + 1);
(*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 44))(a4, a5, a6, a7);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(v7, v8, v7 + 1, v8 + 2 * a1);
(*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 44))(a4, a5, a6, a7);
return (*(int (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(
a2 + a1,
v8,
a2 + a1 + 1,
v8 + 2 * a1 + 1);
}
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10001CD0) --------------------------------------------------------
int __userpurge sub_10001CD0<eax>(int a1<edx>, int a2<edi>, int a3<esi>, int a4, int a5)
{
(*(void (__stdcall **)(_DWORD, int, _DWORD, signed int))(*(_DWORD *)dword_1012DE68 + 44))(0, a1, 0, 255);
return (*(int (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(a2, a3, a2 + a4, a3 + a5);
}
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10001D10) --------------------------------------------------------
int __userpurge sub_10001D10<eax>(int a1<edi>, int a2, int a3, int a4)
{
int v4; // esi@1
(*(void (__stdcall **)(signed int, signed int, signed int, signed int))(*(_DWORD *)dword_1012DE68 + 44))(
255,
255,
255,
64);
v4 = a2 + 1;
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(a1, a2, a1 + a3, a2 + 1);
(*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)dword_1012DE68 + 44))(0, 0, 0, 64);
(*(void (__thiscall **)(int, int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(
dword_1012DE68,
a1,
a2 + a4 - 1,
a1 + a3,
a2 + a4);
(*(void (__stdcall **)(signed int, signed int, signed int, _DWORD))(*(_DWORD *)dword_1012DE68 + 44))(
255,
255,
255,
64);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(a1, v4, a1 + 1, v4 + a4 - 2);
(*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 44))(0, 0, 0, 64);
return (*(int (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(
a1 + a3 - 1,
v4,
a1 + a3,
v4 + a4 - 2);
}
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10001E00) --------------------------------------------------------
unsigned int __userpurge sub_10001E00<eax>(int a1<eax>, int a2<ebx>, int a3, int a4, const char *a5)
{
int v5; // esi@1
int v6; // ebp@1
unsigned int result; // eax@1
int v8; // [sp+64h] [bp+8h]@1
v5 = a1;
(*(void (__stdcall **)(signed int, signed int, signed int, signed int))(*(_DWORD *)dword_1012DE68 + 44))(
65,
85,
115,
225);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(a2, v5, a2 + a3, v5 + 14);
sub_10001D10(a2, v5, a3, 14);
v8 = a4 - 16;
(*(void (__stdcall **)(signed int, signed int, signed int, signed int))(*(_DWORD *)dword_1012DE68 + 44))(
65,
85,
115,
255);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(a2, v5 + 16, a2 + a3, v5 + 16 + v8);
sub_10001D10(a2, v5 + 16, a3, v8);
v6 = a2 + a3 - 10;
(*(void (__stdcall **)(signed int, signed int, signed int, signed int))(*(_DWORD *)dword_1012DE68 + 44))(
65,
85,
115,
255);
(*(void (__stdcall **)(int, int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(v6, v5 + 2, v6 + 1, v5 + 3);
sub_10001D10(v6, v5 + 2, 1, 1);
result = (unsigned int)a5;
if ( a5 )
result = sub_10001A50(a2 + a3 / 2, v5, 255, 255, 255, 255, 1, 0, a5);
return result;
}
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10001F20) --------------------------------------------------------
int __thiscall sub_10001F20(int this)
{
int v1; // edi@1
int v2; // esi@1
float v3; // ST10_4@1
int result; // eax@1
int v5; // ecx@2
signed int v6; // esi@2
signed int v7; // edi@2
float v8; // [sp+10h] [bp-1824h]@2
float v9; // [sp+14h] [bp-1820h]@2
char v10; // [sp+1Ch] [bp-1818h]@2
char v11; // [sp+28h] [bp-180Ch]@2
char v12; // [sp+34h] [bp-1800h]@1
char v13; // [sp+2D4h] [bp-1560h]@2
v1 = this + 4;
v2 = *(_DWORD *)(this + 4) + 60;
v3 = (double)GetTickCount();
result = (*(int (__thiscall **)(int, char *, signed int, signed int, _DWORD))v2)(v1, &v12, 128, 256, LODWORD(v3));
if ( (_BYTE)result )
{
sub_10008C40((int)&v13, (int)&v11);
sub_10008DF0((int)&v13, 3, (int)&v10);
sub_100089F0((int)&v8, v5, (int)&v10);
v6 = (signed int)v9;
v7 = (signed int)v8;
(*(void (__stdcall **)(signed int, signed int, signed int, signed int))(*(_DWORD *)dword_1012DE68 + 44))(
255,
255,
255,
255);
result = (*(int (__stdcall **)(signed int, signed int, int, int))(*(_DWORD *)dword_1012DE68 + 48))(
v7,
v6,
v7 + 2,
v6 + 2);
}
return result;
}
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10002000) --------------------------------------------------------
int __cdecl sub_10002000()
{
int v0; // ebp@1
int v1; // ebx@1
int result; // eax@1
int v3; // esi@2
int v4; // esi@3
int v5; // edi@3
v0 = dword_10034AE4 / 2;
v1 = dword_10034AE8 / 2;
result = (signed int)flt_10034BD8 - 1;
switch ( (signed int)flt_10034BD8 )
{
case 1:
v3 = dword_10034AE8 / 2;
sub_10001B70(255, v0 - 14, dword_10034AE8 / 2, 9, 1, 255, 0, 0);
sub_10001B70(255, v0 + 5, v3, 9, 1, 255, 0, 0);
sub_10001B70(255, v0, v1 - 14, 1, 9, 255, 0, 0);
sub_10001B70(255, v0, v1 + 5, 1, 9, 255, 0, 0);
result = sub_10001B70(255, v0, v1, 1, 1, 255, 0, 0);
break;
case 2:
(*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 44))(255, 0, 0, 255);
(*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 48))(
v0 - 7,
v1,
v0 - 7 + 14,
v1 + 1);
v4 = dword_10034AE8 / 2 - 7;
v5 = dword_10034AE4 / 2;
(*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 44))(255, 0, 0, 255);
result = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)dword_1012DE68 + 48))(
v5,
v4,
v5 + 1,
v4 + 14);
break;
case 3:
sub_10001B70(255, v0 - 25, dword_10034AE8 / 2, 50, 1, 255, 0, 0);
result = sub_10001B70(255, v0, v1 - 25, 1, 50, 255, 0, 0);
break;
case 4:
sub_10001B70(255, v0 - 25, dword_10034AE8 / 2, 50, 2, 255, 0, 0);
result = sub_10001B70(255, v0, v1 - 25, 2, 50, 255, 0, 0);
break;
case 5:
sub_10001B70(255, 0, dword_10034AE8 / 2, 2 * v0, 1, 255, 0, 0);
result = sub_10001B70(255, v0, 0, 1, 2 * v1, 255, 0, 0);
break;
default:
return result;
}
return result;
}
// 10034AE4: using guessed type int dword_10034AE4;
// 10034AE8: using guessed type int dword_10034AE8;
// 10034BD8: using guessed type float flt_10034BD8;
// 1012DE68: using guessed type int dword_1012DE68;
//----- (10002220) --------------------------------------------------------
void __stdcall sub_10002220(int a1, int a2, int a3)
{
int v3; // eax@7
double v4; // st7@29
int v5; // eax@30
const CHAR v6; // cl@31
int v7; // eax@34
const CHAR v8; // cl@35
int v9; // eax@38
const CHAR v10; // cl@39
int v11; // eax@42
const CHAR v12; // cl@43
int v13; // eax@46
const CHAR v14; // cl@47
int v15; // eax@50
const CHAR v16; // cl@51
const CHAR *v17; // eax@52
const CHAR v18; // cl@53
int v19; // edx@54
int v20; // ecx@54
double v21; // st7@57
double v22; // st7@68
int v23; // esi@70
int v24; // eax@70
int v25; // ebx@70
int v26; // edi@74
int v27; // eax@77
int v28; // eax@78
int v29; // ebp@78
int v30; // esi@83
int v31; // esi@86
int v32; // edi@86
int v33; // ebx@86
int v34; // eax@86
int v35; // eax@89
int v36; // ebx@90
signed int v37; // edi@92
int v38; // eax@95
int v39; // edx@95
int v40; // eax@95
int v41; // esi@95
int v42; // edx@95
int v43; // eax@95
int v44; // eax@95
int v45; // ecx@95
double v46; // st7@96
int v47; // eax@100
int v48; // eax@100
int v49; // esi@101
double v50; // st7@104
int v51; // eax@119
int v52; // ecx@119
int v53; // edx@119
int v54; // eax@119
int v55; // esi@119
int v56; // edx@119
int v57; // eax@119
int v58; // eax@119
double v59; // st7@120
int v60; // ST48_4@125
int v61; // eax@128
float v62; // ecx@132
int v63; // edi@134
int v64; // esi@135
int v65; // ecx@135
int v66; // eax@136
int v67; // esi@136
int v68; // ecx@136
double v69; // st7@137
int v70; // edi@137
int v71; // eax@148
int v72; // ecx@148
int v73; // edx@148
int v74; // eax@148
int v75; // esi@148
int v76; // edx@148
int v77; // eax@148
int v78; // eax@148
double v79; // st7@149
int v80; // ST48_4@154
int v81; // eax@157
bool v82; // sf@160
unsigned __int8 v83; // of@160
DWORD flNewProtect; // [sp+5Ch] [bp-140h]@1
signed int v85; // [sp+60h] [bp-13Ch]@106
int v86; // [sp+64h] [bp-138h]@90
float v87; // [sp+68h] [bp-134h]@132
int v88; // [sp+6Ch] [bp-130h]@90
float v89; // [sp+70h] [bp-12Ch]@137
float v90; // [sp+74h] [bp-128h]@140
float v91; // [sp+78h] [bp-124h]@98
float v92; // [sp+7Ch] [bp-120h]@109
DWORD flOldProtect; // [sp+84h] [bp-118h]@3
int v94; // [sp+88h] [bp-114h]@70
int v95; // [sp+8Ch] [bp-110h]@74
float v96; // [sp+90h] [bp-10Ch]@135
float v97; // [sp+94h] [bp-108h]@137
int v98; // [sp+9Ch] [bp-100h]@129
int v99; // [sp+A0h] [bp-FCh]@148
int v100; // [sp+A4h] [bp-F8h]@148
int v101; // [sp+A8h] [bp-F4h]@148
int v102; // [sp+ACh] [bp-F0h]@95
int v103; // [sp+B0h] [bp-ECh]@95
int v104; // [sp+B4h] [bp-E8h]@95
int v105; // [sp+B8h] [bp-E4h]@119
int v106; // [sp+BCh] [bp-E0h]@119
int v107; // [sp+C0h] [bp-DCh]@119
char v108; // [sp+C4h] [bp-D8h]@136
float v109; // [sp+C8h] [bp-D4h]@137
char v110; // [sp+D0h] [bp-CCh]@89
char v111; // [sp+DCh] [bp-C0h]@100
char v112; // [sp+E8h] [bp-B4h]@135
char v113; // [sp+F0h] [bp-ACh]@100
char v114; // [sp+102h] [bp-9Ah]@82
char v115; // [sp+114h] [bp-88h]@80
char v116; // [sp+138h] [bp-64h]@82
unsigned int v117; // [sp+198h] [bp-4h]@1
v117 = (unsigned int)&flNewProtect ^ __security_cookie;
if ( dword_1012DE30 )
{
VirtualProtect(*(LPVOID *)dword_1012DE30, 4 * dword_1012DE3C, 0x40u, &flNewProtect);
if ( *(float *)&flNewProtect != 0.0 )
{
*(_DWORD *)dword_1012DE30 = dword_1012DE38;
VirtualProtect(*(LPVOID *)dword_1012DE30, 4 * dword_1012DE3C, flNewProtect, &flOldProtect);
}
}
(*(void (__stdcall **)(int, int, int))(*(_DWORD *)dword_1012DE74 + 160))(a1, a2, a3);
if ( dword_1012DE30 )
{
VirtualProtect(*(LPVOID *)dword_1012DE30, 4 * dword_1012DE3C, 0x40u, &flNewProtect);
if ( *(float *)&flNewProtect != 0.0 )
{
*(_DWORD *)dword_1012DE30 = dword_1012DE34;
VirtualProtect(*(LPVOID *)dword_1012DE30, 4 * dword_1012DE3C, flNewProtect, &flOldProtect);
}
}
v3 = (*(int (__stdcall **)(int))(*(_DWORD *)dword_1012DE74 + 140))(a1);
if ( *(_BYTE *)v3 != 77 || *(_BYTE *)(v3 + 3) != 83 || *(_BYTE *)(v3 + 9) != 84 || *(_BYTE *)(v3 + 12) != 80 )
return;
if ( !byte_1012DE48 )
{
sub_10001A10();
(*(void (__stdcall **)(int *, int *))(*(_DWORD *)dword_1012DE5C + 20))(&dword_10034AE4, &dword_10034AE8);
byte_1012DE48 = 1;
}
if ( byte_10035318 && dword_100353