C++

Iniuria source code

/* 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
Добавлено: 09 Февраля 2014 03:59:20 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...